Function at 0x4039fd
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x200b8
call 0x40f07c
push ebx
push esi
push edi
mov ebx, 0x2e5258c0
mov eax, 0x45b7
mul ebx
mov dword [ebp - 0x1004c], eax
mov ebx, eax
sub eax, ebx
mov ebx, eax
mov byte [ebp - 0x10003], 0
push 0x430298
call 0x40efe8
mov dword [ebp - 0x1000c], eax
lea eax, [ebp - 0x1003c]
push eax
call fcn.004036f7
pop ecx
or eax, eax
je 0x4041c2
xor ebx, 0x5cf1
push 0
call 0x40f578
call 0x40f404
mov dword [ebp - 0x10034], eax
push eax
lea eax, [ebp - 0x1003c]
push eax
call fcn.004037c4
add esp, 0xc
cmp dword [0x42d10c], 0
je 0x403a51
mov eax, 0x439b
mul ebx
mov dword [ebp - 0x10050], eax
mov ebx, eax
lea eax, [ebp - 0x10020]
push eax
mov eax, dword [0x42d10c]
push eax
mov edi, dword [eax]
call dword [edi + 0x48]
mov dword [ebp - 4], eax
or eax, eax
jne 0x403a51
mov eax, ebx
sub eax, ebx
mov ebx, eax
lea eax, [ebp - 0x10024]
push eax
push 0x430468
mov eax, dword [ebp - 0x10020]
push eax
mov edi, dword [eax]
call dword [edi]
mov dword [ebp - 4], eax
or eax, eax
jne 0x4041b1
mov eax, 0x7a93
mul ebx
mov dword [ebp - 0x10054], eax
mov ebx, eax
lea eax, [ebp - 0x10040]
push eax
mov eax, dword [0x42d10c]
push eax
mov edi, dword [eax]
call dword [edi + 0x78]
mov dword [ebp - 4], eax
or eax, eax
jne 0x40419f
push 0x41afb0
push dword [ebp - 0x10040]
call fcn.00403657
add esp, 8
mov edi, eax
inc edi
mov dword [ebp - 0x10008], edi
mov eax, ebx
mul ebx
mov dword [ebp - 0x10058], eax
mov ebx, eax
mov eax, dword [ebp - 0x10034]
mov dword [0x42b0b4], eax
mov eax, ebx
add eax, ebx
mov ebx, eax
lea eax, [ebp - 0x10042]
push eax
mov eax, dword [0x42d10c]
push eax
mov edi, dword [eax]
call dword [edi + 0x7c]
mov dword [ebp - 4], eax
or eax, eax
jne 0x40419f
cmp word [ebp - 0x10042], 0
je 0x403cb6
cmp byte [ebp - 0x10003], 0
je 0x40419f
push 1
push 0x4303a5
lea eax, [ebp - 0x10003]
push eax
call fcn.0040434d
add esp, 0xc
mov edi, eax
mov word [ebp - 0x1005a], di
add ebx, 0x24bd
movzx eax, word [ebp - 0x1005a]
cmp eax, 0xffff
je 0x403c8f
movzx eax, word [ebp - 0x1005a]
inc eax
push eax
lea eax, [ebp - 0x10003]
push eax
push 0x41afb0
call 0x40f5b4
add esp, 0xc
movzx eax, word [ebp - 0x1005a]
mov byte [eax + 0x41afb0], 0
mov word [ebp - 0x1005a], 0
add ebx, 0xbb6
push 1
movzx eax, word [ebp - 0x1005a]
lea eax, [eax + 0x42d114]
push eax
push 0x41afb0
call fcn.0040434d
add esp, 0xc
cmp eax, 0xffff
je 0x403c30
lea eax, [ebp - 0x10003]
push eax
push 0x419fa0
call fcn.0040396b
add esp, 8
jmp 0x403c8f
movzx eax, word [ebp - 0x1005a]
mov dword [ebp - 0x10060], eax
lea ecx, [eax + 0x42d114]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x403c47
mov esi, dword [ebp - 0x10060]
add esi, eax
mov edi, esi
mov word [ebp - 0x1005a], di
inc word [ebp - 0x1005a]
movzx eax, word [ebp - 0x1005a]
cmp byte [eax + 0x42d114], 0
jne 0x403be0
lea eax, [ebp - 0x10003]
push eax
push 0x42b2d0
call fcn.0040396b
add esp, 8
mov eax, 0x6fec
mul ebx
mov dword [ebp - 0x10064], eax
mov ebx, eax
mov byte [ebp - 0x10003], 0
jmp 0x40419f
mov eax, ebx
xor eax, ebx
mov ebx, eax
lea eax, [ebp - 0x10028]
push eax
mov eax, dword [ebp - 0x10024]
push eax
mov edi, dword [eax]
call dword [edi + 0x5c]
mov dword [ebp - 4], eax
or eax, eax
jne 0x40419f
add ebx, 0x35a6
lea eax, [ebp - 0x10048]
push eax
mov eax, dword [ebp - 0x10028]
push eax
mov edi, dword [eax]
call dword [edi + 0x20]
mov dword [ebp - 4], eax
or eax, eax
jne 0x404193
and dword [ebp - 0x1002c], 0
mov eax, ebx
mul ebx
mov dword [ebp - 0x1005c], eax
mov ebx, eax
and dword [ebp - 0x10030], 0
cmp dword [ebp - 0x10048], 1
jle 0x403dd4
mov eax, 0x53cd
mul ebx
mov dword [ebp - 0x10084], eax
mov ebx, eax
mov word [ebp - 0x10070], 0x17
mov dword [ebp - 0x10068], 1
lea eax, [ebp - 0x10080]
push eax
lea eax, [ebp - 0x10070]
push eax
mov eax, dword [ebp - 0x10028]
push eax
mov esi, dword [eax]
call dword [esi + 0x1c]
add ebx, 0x5266
lea eax, [ebp - 0x1002c]
push eax
push 0x430498
mov eax, dword [ebp - 0x10078]
push eax
mov edi, dword [eax]
call dword [edi]
mov dword [ebp - 4], eax
or eax, eax
jne 0x404193
lea eax, [ebp - 0x10030]
push eax
mov eax, dword [ebp - 0x1002c]
push eax
mov edi, dword [eax]
call dword [edi + 0xd0]
mov dword [ebp - 4], eax
or eax, eax
jne 0x40417e
lea eax, [ebp - 0x10018]
push eax
mov eax, dword [ebp - 0x10030]
push eax
mov edi, dword [eax]
call dword [edi + 0x38]
mov dword [ebp - 4], eax
xor ebx, 0x7dfd
or eax, eax
je 0x403df8
jmp 0x404169
lea eax, [ebp - 0x10018]
push eax
mov eax, dword [ebp - 0x10024]
push eax
mov edi, dword [eax]
call dword [edi + 0x38]
mov dword [ebp - 4], eax
xor ebx, 0x1ffc
or eax, eax
jne 0x404193
mov eax, ebx
add eax, ebx
mov ebx, eax
lea eax, [ebp - 0x1001c]
push eax
mov eax, dword [ebp - 0x10018]
push eax
mov edi, dword [eax]
call dword [edi + 0x24]
mov dword [ebp - 4], eax
or eax, eax
jne 0x40415d
sub ebx, 0x3911
and dword [ebp - 0x10010], 0
push dword [ebp - 0x10008]
push 0x41afb0
lea eax, [ebp - 0x10003]
push eax
call 0x40f5b4
add esp, 0xc
and dword [ebp - 0x10014], 0
jmp 0x404135
push 0
call 0x40f578
mov eax, ebx
add eax, ebx
mov ebx, eax
push dword [ebp - 0x10014]
lea eax, [ebp - 0x10003]
push eax
push 0x43028a
lea eax, [ebp - 0x10003]
push eax
call 0x40f5f0
add esp, 0x14
mov eax, 0x1414
mul ebx
mov dword [ebp - 0x10084], eax
mov ebx, eax
mov word [ebp - 0x10080], 2
mov eax, dword [ebp - 0x10014]
mov dword [ebp - 0x10078], eax
lea eax, [ebp - 0x1006c]
push eax
lea esi, [ebp - 0x10080]
sub esp, 0x10
mov edi, esp
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x10080]
sub esp, 0x10
mov edi, esp
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x10018]
push edi
mov edi, dword [edi]
call dword [edi + 0x2c]
mov dword [ebp - 4], eax
mov eax, ebx
sub eax, ebx
mov ebx, eax
cmp dword [ebp - 4], 0
jne 0x40412f
and dword [ebp - 0x10064], 0
lea eax, [ebp - 0x10064]
push eax
push 0x430488
mov eax, dword [ebp - 0x1006c]
push eax
mov edi, dword [eax]
call dword [edi]
mov dword [ebp - 4], eax
xor ebx, 0x1730
or eax, eax
jne 0x404123
lea eax, [ebp - 0x10068]
push eax
mov eax, dword [ebp - 0x10064]
push eax
mov edi, dword [eax]
call dword [edi + 0x6c]
mov dword [ebp - 4], eax
mov eax, ebx
add eax, ebx
mov ebx, eax
cmp dword [ebp - 4], 0
jne 0x404111
and dword [ebp - 0x10060], 0
jmp 0x4040ff
push 0
call 0x40f578
pop ecx
mov eax, 0x7853
mul ebx
mov dword [ebp - 0x100b4], eax
mov ebx, eax
mov word [ebp - 0x100a0], 2
mov eax, dword [ebp - 0x10060]
mov dword [ebp - 0x10098], eax
lea eax, [ebp - 0x1008c]
push eax
lea esi, [ebp - 0x100a0]
sub esp, 0x10
mov edi, esp
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x100a0]
sub esp, 0x10
mov edi, esp
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x10064]
push edi
mov edi, dword [edi]
call dword [edi + 0x74]
mov dword [ebp - 4], eax
add ebx, 0x3397
or eax, eax
jne 0x4040f9
and dword [ebp - 0x10088], 0
lea eax, [ebp - 0x10088]
push eax
push 0x430478
mov eax, dword [ebp - 0x1008c]
push eax
mov edi, dword [eax]
call dword [edi]
mov dword [ebp - 4], eax
or eax, eax
jne 0x4040de
cmp dword [ebp - 0x10088], 0
je 0x4040de
lea eax, [ebp - 0x100b0]
push eax
push 0
push dword [ebp - 0x1000c]
mov eax, dword [ebp - 0x10088]
push eax
mov edi, dword [eax]
call dword [edi + 0x20]
mov dword [ebp - 4], eax
sub ebx, 0x2693
or eax, eax
jne 0x4040de
cmp word [ebp - 0x100b0], 8
jne 0x4040de
cmp dword [ebp - 0x100a8], 0
je 0x4040de
lea eax, [ebp - 0x200b3]
push eax
push dword [ebp - 0x100a8]
call fcn.00403657
add esp, 8
mov edi, eax
inc edi
mov dword [ebp - 0x200b8], edi
add ebx, 0x462e
cmp byte [ebp - 0x200b3], 0
je 0x4040de
mov dword [ebp - 0x10010], 1
push dword [ebp - 0x10060]
lea eax, [ebp - 0x10003]
push eax
push 0x430283
lea eax, [ebp - 0x10003]
push eax
call 0x40f5f0
add esp, 0x10
sub ebx, 0x7b79
lea ecx, [ebp - 0x10003]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x4040ae
mov dword [ebp - 0x10008], eax
push dword [ebp - 0x200b8]
lea eax, [ebp - 0x200b3]
push eax
mov eax, dword [ebp - 0x10008]
lea eax, [ebp + eax - 0x10003]
push eax
call 0x40f5b4
add esp, 0xc
mov eax, ebx
sub eax, ebx
mov ebx, eax
cmp dword [ebp - 0x10088], 0
je 0x4040ed
mov eax, dword [ebp - 0x1008c]
push eax
mov esi, dword [eax]
call dword [esi + 8]
inc dword [ebp - 0x10060]
mov eax, dword [ebp - 0x10068]
cmp dword [ebp - 0x10060], eax
jb 0x403f51
mov eax, dword [ebp - 0x10064]
push eax
mov esi, dword [eax]
call dword [esi + 8]
mov eax, ebx
xor eax, ebx
mov ebx, eax
mov eax, dword [ebp - 0x1006c]
push eax
mov esi, dword [eax]
call dword [esi + 8]
inc dword [ebp - 0x10014]
mov eax, dword [ebp - 0x1001c]
cmp dword [ebp - 0x10014], eax
jb 0x403e4f
cmp dword [ebp - 0x10010], 0
jne 0x404157
mov byte [ebp - 0x10003], 0
xor ebx, 0x7fc1
mov eax, dword [ebp - 0x10018]
push eax
mov esi, dword [eax]
call dword [esi + 8]
cmp dword [ebp - 0x10030], 0
je 0x40417e
mov eax, dword [ebp - 0x10030]
push eax
mov esi, dword [eax]
call dword [esi + 8]
cmp dword [ebp - 0x1002c], 0
je 0x404193
mov eax, dword [ebp - 0x1002c]
push eax
mov esi, dword [eax]
call dword [esi + 8]
mov eax, dword [ebp - 0x10028]
push eax
mov esi, dword [eax]
call dword [esi + 8]
mov eax, dword [ebp - 0x10024]
push eax
mov esi, dword [eax]
call dword [esi + 8]
mov eax, ebx
sub eax, ebx
mov ebx, eax
mov eax, dword [ebp - 0x10020]
push eax
mov esi, dword [eax]
call dword [esi + 8]
jmp 0x403a51
pop edi
pop esi
pop ebx
leave
ret