Function at 0x409c30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42dc62
mov eax, dword fs:[0]
push eax
sub esp, 0x8bc
mov eax, dword [0x43b698]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, ecx
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov dword [ebp - 0x8c8], eax
mov eax, dword [edx + 0x28]
call eax
xor edi, edi
cmp dword [ebp + 0xc], edi
je 0x40a3d2
mov ecx, dword [esi + 0xc]
lea eax, [ebp - 0x814]
mov word [ebp - 0x814], 0xce31
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
push eax
push 2
call edx
push 2
lea eax, [ebp - 0x814]
push eax
push edi
mov ecx, esi
call fcn.004088a0
push 0x400
lea ecx, [ebp - 0x413]
push edi
push ecx
mov byte [ebp - 0x414], 0
call fcn.0042ccee
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x38]
add esp, 0xc
lea eax, [ebp - 0x414]
push eax
push 1
call edx
mov eax, dword [ebp - 0x414]
push eax
push 1
mov ecx, esi
call fcn.004087e0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
call eax
mov al, byte [ebp - 0x414]
cmp al, 0x1f
je 0x40a3d2
cmp al, 0x79
jne 0x40a3d2
mov dword [ebp - 0x8a8], 0xf
mov dword [ebp - 0x8ac], edi
mov byte [ebp - 0x8bc], 0
mov ebx, dword [ebp + 8]
shr ebx, 0x18
push ebx
lea ecx, [ebp - 0x8bc]
mov dword [ebp - 4], edi
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x8bc]
push eax
call edx
push ebx
push edi
mov ecx, esi
call fcn.004087e0
mov dword [ebp - 0x854], 0xf
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
mov eax, dword [ebp + 8]
shr eax, 0x10
push eax
lea ecx, [ebp - 0x868]
mov byte [ebp - 4], 1
mov dword [ebp - 0x8c4], eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x868]
push edx
call eax
mov ecx, dword [ebp - 0x8c4]
push ecx
push edi
mov ecx, esi
call fcn.004087e0
mov dword [ebp - 0x88c], 0xf
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
mov eax, dword [ebp + 8]
shr eax, 8
push eax
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 2
mov dword [ebp - 0x8c0], eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x8a0]
push eax
call edx
mov eax, dword [ebp - 0x8c0]
push eax
push edi
mov ecx, esi
call fcn.004087e0
mov dword [ebp - 0x838], 0xf
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
mov ecx, dword [ebp + 8]
push ecx
lea ecx, [ebp - 0x84c]
mov byte [ebp - 4], 3
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x84c]
push eax
call edx
mov eax, dword [ebp + 8]
push eax
push edi
mov ecx, esi
call fcn.004087e0
mov dword [ebp - 0x870], 0xf
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
xor bl, byte [ebp - 0x8c0]
lea ecx, [ebp - 0x884]
xor bl, byte [ebp - 0x8c4]
mov byte [ebp - 4], 4
xor bl, byte [ebp + 8]
push ebx
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x884]
push eax
call edx
push ebx
push edi
mov ecx, esi
call fcn.004087e0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
lea edx, [ebp - 0x414]
push edx
push 1
call eax
mov ecx, dword [ebp - 0x414]
push ecx
push 1
mov ecx, esi
call fcn.004087e0
cmp byte [ebp - 0x414], 0x79
jne 0x40a39b
mov dword [ebp - 0x81c], 0xf
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
mov ebx, dword [ebp + 0xc]
mov edx, ebx
and edx, 0x80000003
mov byte [ebp - 4], 5
jns 0x409eea
dec edx
or edx, 0xfffffffc
inc edx
lea ecx, [ebp - 0x830]
jne 0x409fcc
dec bl
mov byte [ebp - 0x8c0], bl
mov byte [ebp - 0x8c4], bl
mov ebx, dword [ebp - 0x8c0]
push ebx
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x830]
push edx
call eax
push ebx
push edi
mov ecx, esi
call fcn.004087e0
movzx eax, byte [ebp - 0x8c0]
inc eax
xor ebx, ebx
mov dword [ebp - 0x8c0], eax
cmp eax, edi
jle 0x409f74
mov edi, edi
mov ecx, dword [ebp - 0x8c8]
movzx edx, byte [ecx + ebx]
push edx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov eax, dword [ebp - 0x8c8]
mov cl, byte [eax + ebx]
xor byte [ebp - 0x8c4], cl
inc ebx
cmp ebx, dword [ebp - 0x8c0]
jl 0x409f40
mov eax, dword [ebp - 0x8c0]
mov ecx, dword [esi + 0xc]
mov ebx, dword [ebp - 0x8c8]
mov edx, dword [ecx]
push ebx
push eax
mov eax, dword [edx + 0x30]
call eax
mov ecx, dword [ebp - 0x8c0]
push ecx
push ebx
push edi
mov ecx, esi
call fcn.004088a0
mov ebx, dword [ebp - 0x8c4]
push ebx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
push ebx
push edi
mov ecx, esi
call fcn.004087e0
mov ebx, 0x10
jmp 0x40a175
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
add al, al
add al, al
add al, 3
mov byte [ebp - 0x8c0], al
mov byte [ebp - 0x8c4], al
mov eax, dword [ebp - 0x8c0]
push eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
mov eax, dword [ebp - 0x8c0]
push eax
push edi
mov ecx, esi
call fcn.004087e0
test ebx, ebx
jle 0x40a04a
lea esp, [esp]
mov ecx, dword [ebp - 0x8c8]
movzx edx, byte [ecx + edi]
push edx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov eax, dword [ebp - 0x8c8]
mov cl, byte [eax + edi]
xor byte [ebp - 0x8c4], cl
inc edi
cmp edi, ebx
jl 0x40a020
mov ecx, dword [esi + 0xc]
mov edi, dword [ebp - 0x8c8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x30]
push edi
push ebx
call eax
push ebx
push edi
push 0
mov ecx, esi
call fcn.004088a0
movzx eax, byte [ebp - 0x8c0]
mov edi, 1
cmp ebx, eax
jg 0x40a0f8
sub eax, ebx
lea ebx, [edi + eax]
cmp dword [ebp - 0x81c], edi
jae 0x40a09b
mov ecx, dword [ebp - 0x820]
push ecx
push edi
lea ecx, [ebp - 0x830]
call fcn.00402420
mov eax, dword [ebp - 0x830]
mov ecx, 0x10
cmp dword [ebp - 0x81c], ecx
jae 0x40a0b4
lea eax, [ebp - 0x830]
mov byte [eax], 0xff
mov eax, dword [ebp - 0x830]
mov dword [ebp - 0x820], edi
cmp dword [ebp - 0x81c], ecx
jae 0x40a0d1
lea eax, [ebp - 0x830]
mov byte [eax + 1], 0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
sub ebx, edi
mov al, byte [ebp - 0x8c4]
not al
mov byte [ebp - 0x8c4], al
jne 0x40a080
cmp dword [ebp - 0x81c], edi
jae 0x40a113
mov ecx, dword [ebp - 0x820]
push ecx
push edi
lea ecx, [ebp - 0x830]
call fcn.00402420
mov eax, dword [ebp - 0x830]
mov ebx, 0x10
cmp dword [ebp - 0x81c], ebx
jae 0x40a12c
lea eax, [ebp - 0x830]
mov dl, byte [ebp - 0x8c4]
mov byte [eax], dl
mov eax, dword [ebp - 0x830]
mov dword [ebp - 0x820], edi
cmp dword [ebp - 0x81c], ebx
jae 0x40a14e
lea eax, [ebp - 0x830]
mov byte [eax + 1], 0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x830]
push edx
call eax
mov ecx, dword [ebp - 0x8c4]
push ecx
push 0
mov ecx, esi
call fcn.004087e0
xor edi, edi
mov edx, dword [ebp + 0x14]
push edx
call dword [0x4310e0]
mov ecx, dword [esi + 0xc]
lea edx, [ebp - 0x414]
mov byte [ebp - 0x414], 0xff
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
push edx
push 1
call eax
mov ecx, dword [ebp - 0x414]
push ecx
push 1
mov ecx, esi
call fcn.004087e0
cmp byte [ebp - 0x414], 0x79
jne 0x40a2ab
cmp dword [ebp - 0x81c], ebx
jb 0x40a1cd
mov edx, dword [ebp - 0x830]
push edx
call fcn.0042cccc
add esp, 4
mov esi, 0xf
mov dword [ebp - 0x81c], esi
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
cmp dword [ebp - 0x870], ebx
jb 0x40a1fc
mov eax, dword [ebp - 0x884]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x870], esi
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
cmp dword [ebp - 0x838], ebx
jb 0x40a226
mov ecx, dword [ebp - 0x84c]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x838], esi
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
cmp dword [ebp - 0x88c], ebx
jb 0x40a250
mov edx, dword [ebp - 0x8a0]
push edx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
cmp dword [ebp - 0x854], ebx
jb 0x40a27a
mov eax, dword [ebp - 0x868]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x854], esi
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
cmp dword [ebp - 0x8a8], ebx
jb 0x40a2a4
mov ecx, dword [ebp - 0x8bc]
push ecx
call fcn.0042cccc
add esp, 4
xor al, al
jmp 0x40a3d4
cmp dword [ebp - 0x81c], ebx
jb 0x40a2c2
mov edx, dword [ebp - 0x830]
push edx
call fcn.0042cccc
add esp, 4
mov esi, 0xf
mov dword [ebp - 0x81c], esi
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
cmp dword [ebp - 0x870], ebx
jb 0x40a2f1
mov eax, dword [ebp - 0x884]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x870], esi
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
cmp dword [ebp - 0x838], ebx
jb 0x40a31b
mov ecx, dword [ebp - 0x84c]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x838], esi
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
cmp dword [ebp - 0x88c], ebx
jb 0x40a345
mov edx, dword [ebp - 0x8a0]
push edx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
cmp dword [ebp - 0x854], ebx
jb 0x40a36f
mov eax, dword [ebp - 0x868]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x854], esi
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
cmp dword [ebp - 0x8a8], ebx
jb 0x40a3d2
mov ecx, dword [ebp - 0x8bc]
push ecx
call fcn.0042cccc
add esp, 4
jmp 0x40a3d2
lea ecx, [ebp - 0x884]
call fcn.00402590
lea ecx, [ebp - 0x84c]
call fcn.00402590
lea ecx, [ebp - 0x8a0]
call fcn.00402590
lea ecx, [ebp - 0x868]
call fcn.00402590
lea ecx, [ebp - 0x8bc]
call fcn.00402590
mov al, 0x14
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042ccde
mov esp, ebp
pop ebp
ret 0x10