{ "gcp_cmd01_AllocateDRMSession": { "addr": "0x402718", "copies": [ [ "sub_405084", "a1: 0, a2: off_4027C4, v9", "v9" ] ], "guards": [ "if ( *(_DWORD *)(a2 + 16) <= 1u ) /*0x40272a*/", "if ( *v4 == 0 ) /*0x402736*/", "if ( v7 == 0 ) /*0x402756*/", "if ( v9 != 0 ) /*0x402786*/" ], "lines": 45 }, "gcp_cmd02_SendDRMCertificate": { "addr": "0x404c54", "copies": [], "guards": [ "if ( v4 <= 0x1F ) /*0x404c6a*/", "if ( v9 == 1 ) /*0x404c82*/" ], "lines": 36 }, "gcp_cmd04_GetContentKey": { "addr": "0x403704", "copies": [ [ "sub_405022", "a1: v20, a2: v2, a3: 16, a4: v23, a5: &v21", "&v21" ] ], "guards": [ "if ( v7 < 0x20 ) /*0x403748*/", "if ( sub_4010C4(a1: v22, a2: v6 + 4, a3: 16) != 0 ) /*0x403766*/", "if ( sub_404FB0(a1: dword_403878 - 1879048192, a2: 128, a3: &v19) == 0 ) /*0x403776*/", "if ( sub_40524C(a1: v19, a2: &v16, a3: 1) == 0 /*0x4037b0*/", "while ( *v3 != v26 )", "if ( v8 != 0 ) /*0x403848*/" ], "lines": 110 }, "gcp_cmd05_CloseDRMSession": { "addr": "0x402878", "copies": [ [ "sub_405084", "a1: 0, a2: (const char *)dword_402980, v8", "v8" ] ], "guards": [ "if ( v2 > 0x1F ) /*0x402888*/", "if ( *(_DWORD *)(v5 + 4) == 0 ) /*0x40289c*/", "if ( v6 != 0 ) /*0x4028b2*/", "if ( v7 != 0 ) /*0x4028bc*/", "if ( v8 != 0 ) /*0x4028da*/" ], "lines": 56 }, "gcp_cmdFE02_GetObfKeyCryptoSession": { "addr": "0x403b4c", "copies": [ [ "sub_404FB0", "a1: dword_403CF0 - 1879048192, a2: 128, a3: &v21", "&v21" ], [ "sub_405022", "a1: v20, a2: v2, a3: *(_DWORD *)(a2 + 52), a4: v23, a5: &v19", "&v19" ], [ "sub_405084", "a1: 0, a2: off_403D34[0], a2", "a2" ] ], "guards": [ "if ( v6 >> 30 == 0 ) /*0x403b74*/", "if ( *(_DWORD *)(88 * HIBYTE(v6) + a1 + 2080) != 2 ) /*0x403b8e*/", "if ( (unsigned int)(v8 - 1) > 0xF ) /*0x403b96*/", "if ( sub_4010C4(a1: v22, a2: a2 + 20, a3: v8) == 0 ) /*0x403bc8*/", "if ( sub_404FB0(a1: dword_403CF0 - 1879048192, a2: 128, a3: &v21) != 0 /*0x403c14*/", "while ( *v3 != v26 ) /*0x403c88*/" ], "lines": 118 }, "gcp_cmdFE03_CreateAuthenticatedSession": { "addr": "0x402e94", "copies": [], "guards": [ "if ( v4 == 0x10000000 ) /*0x402eb2*/", "if ( *(_DWORD *)(v5 + 24) == 0 ) /*0x402eb6*/", "if ( (_DWORD)v8 == 0 ) /*0x402eee*/", "if ( v12 != 0 ) /*0x402f0a*/" ], "lines": 55 }, "gcp_cmdFE08_KeyExchangeAuthenticatedSession": { "addr": "0x4040e0", "copies": [], "guards": [ "if ( v6 >> 28 != 0 ) /*0x404102*/", "if ( v8[193] == 1 ) /*0x40411a*/", "else if ( v8[198] == 1 ) /*0x404128*/", "if ( v7 == 0 ) /*0x404152*/", "if ( dword_405CE4 != v17 ) /*0x404184*/" ], "lines": 70 }, "gcp_cmdFE09": { "addr": "0x402988", "copies": [ [ "sub_405084", "a1: 0, a2: off_402B28[0], v8, v11", "v11" ], [ "sub_405084", "a1: 0, a2: (const char *)dword_402B6C, v8, v11", "v11" ], [ "sub_405084", "a1: 0, a2: off_402B70[0], v8, v11", "v11" ] ], "guards": [ "if ( v4 >> 28 == 0 ) /*0x4029a4*/", "if ( v6 > 0xFFFFFFFB || v6 + 4 <= v7 ) /*0x4029d2*/", "if ( v9 != 1 ) /*0x4029f2*/", "if ( *(_DWORD *)(v14 + 792) == 3 ) /*0x402a14*/", "if ( sub_4052AC() == 0 ) /*0x402a22*/", "if ( v15 <= *(_DWORD *)(v14 + 840) ) /*0x402a70*/" ], "lines": 106 }, "gcp_cmdFE0A_QueryAccessibilityAttributes": { "addr": "0x404420", "copies": [ [ "sub_403678", "a1: v11 + 198, a2: a2 + 1620, a3: v7", "v7" ] ], "guards": [ "if ( v4 >> 28 == 0 ) /*0x40443c*/", "if ( v6 <= 0xFFFFFFFB ) /*0x404458*/", "if ( v10 + 4 <= v7 ) /*0x4044e8*/", "if ( v11[198] != 3 ) /*0x404470*/", "if ( *((_QWORD *)v11 + 104) >= (unsigned __int64)(unsigned int)v12 ) /*0x404494*/", "if ( (unsigned int)(v11[193] - 1) >= 2 ) /*0x4044cc*/" ], "lines": 148 }, "gcp_cmdFE0B_DestroyAuthenticatedSession": { "addr": "0x4030a4", "copies": [], "guards": [ "if ( v4 >> 28 == 0 ) /*0x4030ba*/", "if ( *(_DWORD *)(v6 + 768) == v4 ) /*0x4030d2*/", "if ( v7 == 0 || (v8 = v7 - 1, *(_DWORD *)(a1 + 7680) = v8, v8 == 0) ) /*0x4030ea*/", "if ( v9 != 0 ) /*0x4030f2*/" ], "lines": 35 }, "gcp_cmdFE0C_CreateAuthenticatedSession": { "addr": "0x402f90", "copies": [], "guards": [ "if ( v4 == 0x40000000 ) /*0x402fac*/", "if ( *(_DWORD *)(v5 + 32) == 0 ) /*0x402fb0*/", "if ( v8 == 0 ) /*0x402ff0*/", "if ( v12 != 0 ) /*0x40300a*/" ], "lines": 56 }, "gcp_cmdFE0D_DestroyAuthenticatedSession": { "addr": "0x403170", "copies": [], "guards": [ "if ( v4 >> 30 != 0 ) /*0x403186*/", "if ( *(_DWORD *)(v6 + 2048) == v4 ) /*0x40319c*/", "if ( v7 == 0 || (v8 = v7 - 1, *(_DWORD *)(a1 + 7680) = v8, v8 == 0) ) /*0x4031b8*/", "if ( v9 != 0 ) /*0x4031c0*/" ], "lines": 33 }, "gcp_cmdFE0F_GetCryptoSessionByDecodeHandle": { "addr": "0x403a88", "copies": [], "guards": [ "if ( i == 0 ) /*0x403aa0*/", "if ( sub_4010C4(a1: v4 + 6, a2: a2 + 16, a3: 8) == 0 ) /*0x403aae*/" ], "lines": 26 }, "gcp_cmdFE10_StartKeyRefreshCryptoSession": { "addr": "0x404e28", "copies": [], "guards": [ "if ( v4 >> 30 != 0 ) /*0x404e3e*/", "if ( v7 == 2 ) /*0x404e54*/" ], "lines": 44 }, "gcp_cmdFE11_FinishKeyRefreshCryptoSession": { "addr": "0x4032d4", "copies": [], "guards": [ "if ( v4 >> 30 != 0 ) /*0x4032ea*/", "if ( *(_DWORD *)(v7 + 2080) == 2 ) /*0x403300*/" ], "lines": 42 } }