Function at 0x668db0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xe0
push esi
mov esi, dword [esp + 0xe8]
push edi
mov edi, ecx
mov ecx, esi
mov dword [esp + 0x10], edi
call fcn.0062aed0
test eax, eax
je 0x6548b1
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x65411b
lea eax, [edi + 0x40]
push eax
mov ecx, esi
mov dword [0x744c40], 0x77f2d4
call fcn.0062af10
push 0x3f800000
push 0
push 0xa
lea ecx, [edi + 0x2c08]
push ecx
mov ecx, esi
call fcn.0062a9c0
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x65413d
push 0x457ff000
push 0
push 0x10
lea edx, [edi + 0x2bf0]
push edx
mov ecx, esi
call fcn.0062a9c0
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x65416f
push 1
push 0xffffffffffffffff
lea eax, [edi + 0x2bf8]
push eax
mov ecx, esi
call fcn.0062a890
push 0xfff
push 0
lea ecx, [edi + 0x2bfc]
push ecx
mov ecx, esi
call fcn.0062a890
push ebx
push ebp
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x654246
lea edx, [edi + 0x316c]
push edx
mov ecx, esi
call fcn.0062af10
test eax, eax
je 0x654246
push 0x15
push 0x77f0b8
mov ecx, esi
call fcn.0062adf0
push 0x15
push 0x77f138
mov ecx, esi
call fcn.0062adf0
push 0x64
push 0
lea eax, [edi + 0x3170]
push eax
mov ecx, esi
call fcn.0062a890
lea ebx, [edi + 0x3174]
push 0x77f0b8
push ebx
call fcn.00652cc0
lea ebp, [edi + 0x31f4]
push 0x77f138
push ebp
call fcn.00652cc0
add esp, 0x10
push ebp
lea ecx, [esp + 0xb0]
call fcn.00627350
push ebx
lea ecx, [esp + 0x6c]
call fcn.00627350
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0x24]
call fcn.00626b90
lea edx, [esp + 0x68]
push edx
lea ecx, [esp + 0x48]
call fcn.00626b90
lea ecx, [esp + 0x44]
call fcn.006176f0
lea ecx, [esp + 0x20]
call fcn.006176f0
lea ecx, [esp + 0x68]
call fcn.006176f0
lea ecx, [esp + 0xac]
call fcn.006176f0
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x654299
lea eax, [edi + 0x316c]
push eax
mov ecx, esi
call fcn.0062af10
test eax, eax
je 0x654299
push 0x20
push 0
lea ecx, [edi + 0x3274]
push ecx
mov ecx, esi
call fcn.0062a890
push 0x20
push 0
lea edx, [edi + 0x3278]
push edx
mov ecx, esi
call fcn.0062a890
push 0x20
push 0
lea eax, [edi + 0x327c]
push eax
mov ecx, esi
call fcn.0062a890
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6542d9
lea ebx, [edi + 0x2d20]
mov ebp, 0x10
nop
push 3
push 0
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call fcn.0062a890
mov eax, dword [esp + 0x10]
cmp eax, 3
jne 0x6542d1
mov dword [ebx], 0xffffffff
jmp 0x6542d3
mov dword [ebx], eax
add ebx, 4
dec ebp
jne 0x6542b0
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x654339
push 0x15
push 0x77f060
mov ecx, esi
call fcn.0062adf0
push 0x15
push 0x77f08a
mov ecx, esi
call fcn.0062adf0
lea ebx, [edi + 0x54]
push 0x77f060
push ebx
call fcn.00652cc0
lea ebp, [edi + 0x9c]
push 0x77f08a
push ebp
call fcn.00652cc0
lea edx, [edi + 0x7e]
push ebx
push edx
call fcn.00625b90
lea eax, [edi + 0xc6]
push ebp
push eax
call fcn.00625b90
add esp, 0x20
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6543ba
lea ebx, [edi + 0x98]
mov ebp, 2
nop
push 0x20
push 0
lea ecx, [ebx - 4]
push ecx
mov ecx, esi
call fcn.0062a890
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654382
push 0xff
push 0xffffff01
lea edx, [esp + 0x1c]
push edx
call fcn.0062a890
jmp 0x6543ae
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x6543a3
push 0x1388
push 0x100
lea eax, [esp + 0x1c]
push eax
call fcn.0062a890
jmp 0x6543ae
push 0x20
call fcn.0062b2a0
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
mov dword [ebx], ecx
add ebx, 0x48
dec ebp
jne 0x654350
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6543d1
push 0x20
mov ecx, esi
call fcn.0062b2a0
mov dword [edi + 0x48], eax
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x654599
mov edi, dword [esp + 0x18]
mov dword [esp + 0x14], 0
add edi, 0x128
mov edx, dword [edi]
mov eax, dword [edi + 4]
mov ecx, esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], eax
call fcn.0062aed0
test eax, eax
je 0x6544a9
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov dword [edi], eax
je 0x6544a2
push 0
lea ebx, [edi - 0x40]
push ebx
mov ecx, esi
call fcn.0062adf0
lea ebp, [edi + 0x18]
lea ecx, [ebp - 0x2e]
push ebx
push ecx
call fcn.00625b90
add esp, 8
push 0x40
push ebp
mov ecx, esi
call fcn.0062a840
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov dword [edi + 4], eax
je 0x654481
push 0x1f
push 0
lea edx, [edi + 0xc]
push edx
mov ecx, esi
call fcn.0062a890
mov eax, dword [esp + 0x14]
push eax
mov ecx, 0x782c70
call fcn.006584f0
test eax, eax
jne 0x654481
push ebx
mov ecx, 0x782cf0
call fcn.0065b470
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x6544a9
cmp dword [edi], 1
jne 0x6544a9
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
push ecx
push edx
mov ecx, 0x782cf0
call fcn.0043f8a0
jmp 0x6544a9
mov dword [edi + 4], 0
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp + 0x2c04]
test eax, eax
je 0x65450e
push 0
mov ecx, 0x782c70
call fcn.00658430
mov ebx, dword [esp + 0x14]
cmp ebx, eax
je 0x654512
cmp dword [edi], 0
je 0x6544e5
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x6544e0
push ebx
mov ecx, ebp
call fcn.00653880
cmp dword [edi], 0
jne 0x6544f5
mov eax, dword [esp + 0x10]
test eax, eax
je 0x6544f5
push ebx
mov ecx, ebp
call fcn.00653a10
mov eax, dword [edi + 4]
test eax, eax
je 0x654512
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x654512
push ebx
mov ecx, ebp
call fcn.00653940
jmp 0x654512
mov ebx, dword [esp + 0x14]
inc ebx
add edi, 0xa8
cmp ebx, 0x20
mov dword [esp + 0x14], ebx
jl 0x6543f2
mov ecx, dword [esp + 0x18]
xor edx, edx
mov dword [ecx + 0x4c], edx
mov dword [ecx + 0x50], edx
lea eax, [ecx + 0x12c]
mov edi, 8
lea ecx, [ecx]
cmp dword [eax - 4], edx
je 0x654548
inc dword [ecx + 0x4c]
cmp dword [eax], edx
je 0x65454f
inc dword [ecx + 0x50]
cmp dword [eax + 0xa4], edx
je 0x65455a
inc dword [ecx + 0x4c]
cmp dword [eax + 0xa8], edx
je 0x654565
inc dword [ecx + 0x50]
cmp dword [eax + 0x14c], edx
je 0x654570
inc dword [ecx + 0x4c]
cmp dword [eax + 0x150], edx
je 0x65457b
inc dword [ecx + 0x50]
cmp dword [eax + 0x1f4], edx
je 0x654586
inc dword [ecx + 0x4c]
cmp dword [eax + 0x1f8], edx
je 0x654591
inc dword [ecx + 0x50]
add eax, 0x2a0
dec edi
jne 0x654540
mov ecx, esi
call fcn.00442050
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ebp, dword [esp + 0x18]
je 0x65481b
push 0x3f
push 0
lea ebx, [ebp + 0x44]
push ebx
mov ecx, esi
call fcn.0062a890
lea edi, [ebp + 0x15c]
mov dword [esp + 0x10], 0x20
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6547fe
test byte [ebx], 1
je 0x654632
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654606
push 0xff
push 0xffffff01
lea eax, [edi - 4]
push eax
call fcn.0062a890
jmp 0x654632
call fcn.0062aed0
test eax, eax
je 0x654626
push 0x1388
push 0x100
lea ecx, [edi - 4]
push ecx
mov ecx, esi
call fcn.0062a890
jmp 0x654632
push 0x20
mov ecx, esi
call fcn.0062b2a0
mov dword [edi - 4], eax
test byte [ebx], 2
je 0x654673
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654650
push 0x3f
push 0
push edi
call fcn.0062a890
jmp 0x654673
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x65466a
push 0x3e8
push 0x40
push edi
call fcn.0062a890
jmp 0x654673
push 0x20
call fcn.0062b2a0
mov dword [edi], eax
test byte [ebx], 4
je 0x6546bb
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654694
push 0x3f
push 0
lea edx, [edi + 4]
push edx
call fcn.0062a890
jmp 0x6546bb
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x6546b1
push 0x3e8
push 0x40
lea eax, [edi + 4]
push eax
call fcn.0062a890
jmp 0x6546bb
push 0x20
call fcn.0062b2a0
mov dword [edi + 4], eax
test byte [ebx], 8
je 0x654705
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6546dc
push 0xf
push 0
lea ecx, [edi + 8]
push ecx
mov ecx, esi
call fcn.0062a890
jmp 0x654705
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x6546fb
push 0x3e8
push 0xf
lea edx, [edi + 8]
push edx
call fcn.0062a890
jmp 0x654705
push 0x20
call fcn.0062b2a0
mov dword [edi + 8], eax
test byte [ebx], 0x10
je 0x65474f
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654726
push 0xf
push 0
lea eax, [edi + 0xc]
push eax
call fcn.0062a890
jmp 0x65474f
call fcn.0062aed0
test eax, eax
je 0x654743
push 0x3e8
push 0xf
lea ecx, [edi + 0xc]
push ecx
mov ecx, esi
call fcn.0062a890
jmp 0x65474f
push 0x20
mov ecx, esi
call fcn.0062b2a0
mov dword [edi + 0xc], eax
test byte [ebx], 0x20
je 0x654797
mov ecx, esi
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x654770
push 0xf
push 0
lea edx, [edi + 0x10]
push edx
call fcn.0062a890
jmp 0x654797
call fcn.0062aed0
test eax, eax
mov ecx, esi
je 0x65478d
push 0x3e8
push 0xf
lea eax, [edi + 0x10]
push eax
call fcn.0062a890
jmp 0x654797
push 0x20
call fcn.0062b2a0
mov dword [edi + 0x10], eax
push 0xf
push 0
lea ecx, [edi - 0x14]
push ecx
mov ecx, esi
call fcn.0062a890
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6547e8
lea edx, [edi + 0x18]
push edx
mov ecx, esi
call fcn.0062af10
lea eax, [edi + 0x1c]
push eax
mov ecx, esi
call fcn.0062af10
lea ecx, [edi + 0x20]
push ecx
mov ecx, esi
call fcn.0062af10
lea edx, [edi + 0x24]
push edx
mov ecx, esi
call fcn.0062af10
lea eax, [edi + 0x28]
push eax
mov ecx, esi
call fcn.0062af10
lea ecx, [edi - 0xc]
push ecx
mov ecx, esi
call fcn.0062af10
lea edx, [edi - 8]
push edx
mov ecx, esi
call fcn.0062af10
mov eax, dword [esp + 0x10]
add edi, 0xa8
dec eax
mov dword [esp + 0x10], eax
jne 0x6545d0
lea ecx, [ebp + 0x10]
call fcn.00652df0
mov ecx, esi
call fcn.00442050
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x65487f
lea edi, [ebp + 0x2d60]
mov ebx, 0xff
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.0062af10
mov ecx, dword [esp + 0x10]
mov edx, dword [edi]
shl ecx, 0xe
xor ecx, edx
and ecx, 0x4000
xor edx, ecx
mov dword [edi], edx
lea edx, [esp + 0x10]
push edx
mov ecx, esi
call fcn.0062af10
mov edx, dword [edi]
mov eax, dword [esp + 0x10]
shl eax, 0xf
xor eax, edx
and eax, 0x8000
xor edx, eax
mov dword [edi], edx
add edi, 4
dec ebx
jne 0x654838
mov ecx, esi
call fcn.00442050
mov ecx, esi
call fcn.0062aed0
test eax, eax
je 0x6548a8
push 4
push 0
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.0062a890
mov edx, dword [esp + 0x1c]
mov dword [ebp + 8], edx
mov ecx, esi
call fcn.00442050
pop ebp
pop ebx
pop edi
pop esi
add esp, 0xe0
ret 4
cmp dword [ecx], 0
je 0x668dbf
mov ecx, 0x77f8a0
jmp 0x6540c0
ret 4