Function at 0x40c470
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x450
mov dword [esp + 0x48], 0xf3610dc1
mov dword [esp + 0x4c], 0xf75ff16e
mov dword [esp + 0x50], 0xfb56f558
mov dword [esp + 0x54], 0xff2df959
mov dword [esp + 0x58], 0xe330fd29
mov dword [esp + 0x5c], 0xe706e130
mov dword [esp + 0x60], 0xeb51e50c
mov dword [esp + 0x64], 0xef7ce941
mov dword [esp + 0x68], 0xd341ed48
mov dword [esp + 0x6c], 0xd741d14b
mov dword [esp + 0x70], 0xdb68d534
mov dword [esp + 0x74], 0xdf3ed96c
mov dword [esp + 0x78], 0xc312dd0d
mov dword [esp + 0x7c], 0xc716c112
mov dword [esp + 0x80], 0xcb2ac51b
mov dword [esp + 0x84], 0xcf67c973
mov dword [esp + 0x88], 0xb368cd5e
mov dword [esp + 0x8c], 0xb769b164
mov dword [esp + 0x90], 0xbb22b554
mov dword [esp + 0x94], 0xbf6ab962
mov dword [esp + 0x98], 0xa342bd55
mov dword [esp + 0x9c], 0xa736a161
mov dword [esp + 0xa0], 0xab06a534
mov dword [esp + 0xa4], 0xaf15a90d
mov dword [esp + 0xa8], 0x9334ad09
mov dword [esp + 0xac], 0x973f915f
mov dword [esp + 0xb0], 0x9b499500
mov dword [esp + 0xb4], 0x9f49994d
mov dword [esp + 0xb8], 0x83509d47
mov dword [esp + 0xbc], 0x875c8157
mov dword [esp + 0xc0], 0x8b628564
mov dword [esp + 0xc4], 0x8f468947
mov dword [esp + 0xc8], 0x73bf8d38
mov dword [esp + 0xcc], 0x779a71bc
mov dword [esp + 0xd0], 0x7bd67594
mov dword [esp + 0xd4], 0x7fd179d1
mov dword [esp + 0xd8], 0x63827dd9
mov dword [esp + 0xdc], 0x67c361ab
mov dword [esp + 0xe0], 0x6bc565c3
mov dword [esp + 0xe4], 0x6f8769fb
mov dword [esp + 0xe8], 0x53956d8c
mov dword [esp + 0xec], 0x57c051f8
mov dword [esp + 0xf0], 0x5bf755c7
mov dword [esp + 0xf4], 0x5f8d59fd
mov dword [esp + 0xf8], 0x43935d8d
mov dword [esp + 0xfc], 0x47944199
mov dword [esp + 0x100], 0x4b984594
mov dword [esp + 0x104], 0x4f9c4998
mov dword [esp + 0x108], 0x33d24d9c
mov dword [esp + 0x10c], 0x37973187
mov dword [esp + 0x110], 0x3b9b359e
mov dword [esp + 0x114], 0x3f9739ae
mov dword [esp + 0x118], 0x23f73def
mov dword [esp + 0x11c], 0x27fd21f7
mov dword [esp + 0x120], 0x2bfd25f6
mov dword [esp + 0x124], 0x2f2e29f2
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov eax, dword [0x44af80]
mov dword [esp + 0xc], eax
xor ecx, ecx
nop
nop
movzx edx, byte [esp + ecx + 0x48]
lea esi, [edx + edx]
not esi
add esi, edx
lea edi, [esi + esi]
not edi
add edi, esi
mov esi, 0x804e1581
sub esi, ecx
lea ebx, [ecx + esi*2]
mov eax, 0x804e1580
sub eax, ebx
lea ebx, [ecx + 0x7fb1ea7e]
or edi, edx
or eax, ebx
and eax, edi
not eax
lea edi, [eax + eax]
not edi
add edi, eax
and esi, 0x8bf202d0
and ebx, 0x740dfd2f
or ebx, esi
xor ebx, edx
lea eax, [ecx + 0x7e]
and eax, edx
xor ebx, 0x8bf202d0
or eax, ebx
not eax
lea esi, [eax + eax]
not esi
add esi, eax
lea edx, [esi + esi]
not edx
add edx, esi
and esi, 0xd658e7a2
and edx, 0x29a7185d
or edx, esi
xor edx, 0xd658e7a2
or edx, edi
not edx
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0x8e
mov byte [esp + ecx + 0x48], al
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0xe8
jb 0x40c6e0
lea eax, [esp + 0x48]
push 0
push 0
push 0
push 0
push eax
call dword [esp + 0x20]
test eax, eax
je 0x40cb12
mov edi, eax
push 0
push 0x1bb
push dword [ebp + 8]
push eax
call dword [0x44af84]
mov dword [esp + 0xc], eax
test eax, eax
je 0x40cb22
mov dword [esp + 4], edi
mov eax, dword [0x44af88]
mov dword [esp + 8], eax
mov dword [esp + 0x48], 0x83f18dfc
mov dword [esp + 0x4c], 0x87f281f7
mov word [esp + 0x50], 0x8584
mov dword [esp + 0x52], 0
mov dword [esp + 0x56], 0
mov dword [esp + 0x5a], 0
mov byte [esp + 0x5e], 0
xor ecx, ecx
nop
nop
movzx edx, byte [esp + ecx + 0x48]
lea esi, [ecx + 0x75bf9d16]
xor esi, edx
mov ebx, 0x8a4062e9
sub ebx, ecx
or esi, ebx
mov eax, esi
not eax
mov edi, eax
and edi, 0x75bf9d3d
and esi, 2
imul esi, edi
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
add esi, ebx
add esi, eax
not esi
add esi, edx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
lea edx, [eax + 0x2504e79c]
mov esi, 0x1afb1863
sub esi, eax
or edx, 0xc7c2b465
add edx, eax
or esi, 0xc7c2b465
lea eax, [esi + edx]
add eax, 0xa504e79e
mov edx, eax
or edx, 0x63
and eax, 0x63
add eax, edx
inc al
mov byte [esp + ecx + 0x48], al
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0x17
jb 0x40c800
push 0x800000
push 0
push 0
push 0
push dword [ebp + 0xc]
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x24]
call dword [esp + 0x24]
test eax, eax
je 0x40cb28
mov ebx, eax
cmp byte [0x44b0b8], 0
je 0x40ca3d
mov dword [esp + 0x10], 0xbb09b9f3
mov dword [esp + 0x14], 0xbf11bd0b
mov dword [esp + 0x18], 0x83278115
mov dword [esp + 0x1c], 0x87e485f8
mov dword [esp + 0x20], 0x8b298927
mov dword [esp + 0x24], 0x8f2a8d2f
mov dword [esp + 0x28], 0x933f912f
mov dword [esp + 0x2c], 0x9735952b
mov dword [esp + 0x30], 0x9b239934
mov dword [esp + 0x34], 0x9fe39d2a
mov word [esp + 0x38], 0xe19e
mov dword [esp + 0x3a], 0
mov dword [esp + 0x3e], 0
mov dword [esp + 0x41], 0
xor eax, eax
nop
nop
nop
movzx ecx, byte [esp + eax + 0x10]
lea esi, [eax + 0x72f66017]
lea edx, [eax + eax]
add edx, 0xe5ecc02e
neg edx
lea edi, [eax + edx]
add edi, 0x16
xor edi, esi
and edi, ecx
xor edi, esi
lea edx, [edi + edi]
not edx
add edx, edi
and edx, esi
mov edi, edx
and edi, 0x72f6607d
mov esi, edx
or esi, 0xfffffffd
inc esi
imul esi, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add ecx, eax
add ecx, 0x72f66017
sub ecx, edx
add ecx, esi
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x48]
mov edx, 0xd
sub edx, ecx
add ecx, 0x72
and edx, 0xa1
and ecx, 0x5e
sub ecx, edx
add cl, 0xe
mov byte [esp + eax + 0x10], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x35
jb 0x40c930
movzx eax, word [esp + 0x10]
test ax, ax
lea edx, [esp + 0x48]
je 0x40c9f1
lea edx, [esp + 0x48]
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40c9e0
mov word [edx], 0
movzx eax, word [0x44b0ba]
test ax, ax
je 0x40ca25
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx + ecx], ax
movzx eax, word [ecx + 0x44b0bc]
add ecx, 2
test ax, ax
jne 0x40ca10
add edx, ecx
mov word [edx], 0
lea eax, [esp + 0x48]
push 0x20000000
push 0xffffffffffffffff
push eax
push ebx
call dword [0x44af94]
xor esi, esi
mov ecx, dword [ebp + 0x10]
mov eax, ecx
neg eax
mov eax, 0
sbb eax, eax
push 0
mov edx, dword [ebp + 0x18]
push edx
push edx
push dword [ebp + 0x14]
push eax
push ecx
push ebx
call dword [0x44af98]
test eax, eax
mov edi, dword [esp + 4]
mov dword [esp + 8], ebx
je 0x40cb32
push 0
push ebx
call dword [0x44af9c]
test eax, eax
je 0x40cb36
mov dword [esp + 0x48], 0
lea eax, [esp + 0x48]
push eax
push ebx
call dword [0x44afa0]
xor ebx, ebx
test eax, eax
je 0x40cb3c
mov eax, dword [esp + 0x48]
mov esi, 0
test eax, eax
je 0x40cb52
xor edi, edi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add eax, esi
inc eax
push eax
push edi
call fcn.0043c360
add esp, 8
test eax, eax
je 0x40cb40
mov ebx, eax
mov dword [esp + 0x10], 0
add eax, esi
lea ecx, [esp + 0x10]
push ecx
push dword [esp + 0x4c]
push eax
mov edi, dword [esp + 0x14]
push edi
call dword [0x44afa4]
add esi, dword [esp + 0x10]
lea eax, [esp + 0x48]
push eax
push edi
call dword [0x44afa0]
test eax, eax
je 0x40cb46
mov eax, dword [esp + 0x48]
mov edi, ebx
test eax, eax
jne 0x40cac0
jmp 0x40cb46
xor ebx, ebx
mov esi, 0
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x40cb74
jmp 0x40cb76
xor esi, esi
xor ebx, ebx
jmp 0x40cb66
xor esi, esi
xor ebx, ebx
mov edi, dword [esp + 4]
jmp 0x40cb5c
xor ebx, ebx
jmp 0x40cb52
xor esi, esi
xor ebx, ebx
jmp 0x40cb52
xor esi, esi
jmp 0x40cb52
test edi, edi
je 0x40cb4c
mov ebx, edi
mov byte [ebx + esi], 0
jmp 0x40cb4e
xor ebx, ebx
mov edi, dword [esp + 4]
push dword [esp + 8]
call dword [0x44afac]
push dword [esp + 0xc]
call dword [0x44afac]
push edi
call dword [0x44afac]
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x40cb8c
mov dword [eax], ebx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x40cb7f
mov dword [eax], esi
test ebx, ebx
setne al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
test ebx, ebx
je 0x40cb9b
push ebx
call fcn.0043a980
add esp, 4
jmp 0x40cb76
xor ebx, ebx
jmp 0x40cb76