Function at 0x409ae0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xf0
mov ecx, dword [esp + 0xf4]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x104]
xor ebp, ebp
push edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], ebp
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], ebp
mov dword [esp + 0x78], ebp
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x80], ebp
mov edx, esi
mov eax, dword [ecx]
add ecx, 4
mov ebx, dword [esp + eax*4 + 0x44]
lea eax, [esp + eax*4 + 0x44]
inc ebx
dec edx
mov dword [eax], ebx
jne 0x409b3f
cmp dword [esp + 0x44], esi
jne 0x409b77
mov ecx, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
xor eax, eax
mov dword [ecx], ebp
mov dword [edx], ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf0
ret
mov ebx, dword [esp + 0x11c]
mov ecx, 1
lea eax, [esp + 0x48]
mov edi, dword [ebx]
mov dword [esp + 0x10], edi
cmp dword [eax], ebp
jne 0x409b9a
inc ecx
add eax, 4
cmp ecx, 0xf
jbe 0x409b8d
mov eax, ecx
cmp edi, ecx
mov dword [esp + 0x14], eax
jae 0x409baa
mov dword [esp + 0x10], ecx
mov edi, ecx
mov edx, 0xf
lea esi, [esp + 0x80]
cmp dword [esi], ebp
jne 0x409bc2
dec edx
sub esi, 4
cmp edx, ebp
jne 0x409bb6
cmp edi, edx
mov dword [esp + 0x2c], edx
jbe 0x409bd0
mov dword [esp + 0x10], edx
mov edi, edx
mov esi, 1
mov dword [ebx], edi
shl esi, cl
cmp ecx, edx
jae 0x409bef
lea ebx, [esp + ecx*4 + 0x44]
sub esi, dword [ebx]
js 0x409c0a
inc ecx
add ebx, 4
shl esi, 1
cmp ecx, edx
jb 0x409be1
lea ecx, [edx*4]
mov dword [esp + 0x20], ecx
lea ebx, [esp + ecx + 0x44]
mov ecx, dword [esp + ecx + 0x44]
sub esi, ecx
mov dword [esp + 0x40], esi
jns 0x409c1a
mov eax, 0xfffffffd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf0
ret
add ecx, esi
mov dword [esp + 0x88], ebp
mov dword [ebx], ecx
xor ecx, ecx
dec edx
je 0x409c3d
xor ebx, ebx
add ecx, dword [esp + ebx + 0x48]
add ebx, 4
dec edx
mov dword [esp + ebx + 0x88], ecx
jne 0x409c2c
mov edx, dword [esp + 0x104]
xor ebx, ebx
mov ecx, dword [edx]
add edx, 4
cmp ecx, ebp
mov dword [esp + 0x1c], edx
je 0x409c75
mov edx, dword [esp + ecx*4 + 0x84]
mov ebp, dword [esp + 0x128]
lea ecx, [esp + ecx*4 + 0x84]
mov dword [ebp + edx*4], ebx
inc edx
mov dword [ecx], edx
mov edx, dword [esp + 0x1c]
xor ebp, ebp
mov ecx, dword [esp + 0x108]
inc ebx
cmp ebx, ecx
jb 0x409c46
mov ecx, dword [esp + 0x20]
mov ebx, edi
neg ebx
mov edx, dword [esp + ecx + 0x84]
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
mov dword [esp + 0x108], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x84], ebp
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0xc4], ebp
mov dword [esp + 0x3c], ebp
jg 0x409f4e
mov esi, dword [esp + 0x34]
lea edx, [esp + eax*4 + 0x44]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx]
mov edx, ecx
dec ecx
test edx, edx
mov dword [esp + 0x20], ecx
je 0x409f2c
lea ecx, [ebx + edi]
cmp eax, ecx
jle 0x409e00
mov dword [esp + 0x38], ecx
jmp 0x409d06
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
add ebx, edi
sub edx, ebx
inc ebp
add ecx, edi
cmp edx, edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x38], ecx
jbe 0x409d27
mov edx, edi
mov ebp, dword [esp + 0x20]
mov ecx, eax
sub ecx, ebx
mov eax, 1
shl eax, cl
lea edi, [ebp + 1]
cmp eax, edi
jbe 0x409d64
or edi, 0xffffffff
sub edi, ebp
mov ebp, dword [esp + 0x28]
add eax, edi
cmp ecx, edx
jae 0x409d64
inc ecx
cmp ecx, edx
jae 0x409d64
mov edi, dword [ebp + 4]
add ebp, 4
shl eax, 1
cmp eax, edi
jbe 0x409d64
sub eax, edi
inc ecx
cmp ecx, edx
jb 0x409d51
mov eax, dword [esp + 0x124]
mov edx, 1
shl edx, cl
mov eax, dword [eax]
mov dword [esp + 0x3c], edx
lea edi, [eax + edx]
cmp edi, 0x5a0
ja 0x409f76
mov edx, dword [esp + 0x120]
lea ebp, [edx + eax*8]
mov eax, dword [esp + 0x18]
lea edx, [esp + eax*4 + 0xc4]
mov eax, dword [esp + 0x124]
mov dword [eax], edi
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [edx], ebp
je 0x409de7
mov esi, dword [esp + 0x24]
mov byte [esp + 0x30], cl
mov dword [esp + eax*4 + 0x84], esi
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov byte [esp + 0x31], al
sub ecx, eax
mov eax, esi
shr eax, cl
mov ecx, dword [edx - 4]
mov edx, dword [esp + 0x30]
mov esi, ebp
sub esi, ecx
sar esi, 3
sub esi, eax
mov dword [ecx + eax*8], edx
mov dword [ecx + eax*8 + 4], esi
jmp 0x409df0
mov eax, dword [esp + 0x118]
mov dword [eax], ebp
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
cmp eax, ecx
jg 0x409cfe
mov ecx, dword [esp + 0x128]
mov dl, al
mov edi, dword [esp + 0x1c]
sub dl, bl
mov byte [esp + 0x31], dl
mov edx, dword [esp + 0x108]
lea ecx, [ecx + edx*4]
cmp edi, ecx
jb 0x409e28
mov byte [esp + 0x30], 0xc0
jmp 0x409e70
mov esi, dword [edi]
mov ecx, dword [esp + 0x10c]
cmp esi, ecx
jae 0x409e49
cmp esi, 0x100
sbb edx, edx
and edx, 0xffffffa0
add edx, 0x60
mov byte [esp + 0x30], dl
jmp 0x409e69
sub esi, ecx
mov ecx, dword [esp + 0x114]
shl esi, 2
mov dl, byte [esi + ecx]
mov ecx, dword [esp + 0x110]
add dl, 0x50
mov esi, dword [esi + ecx]
mov byte [esp + 0x30], dl
add edi, 4
mov dword [esp + 0x1c], edi
mov ecx, eax
mov eax, dword [esp + 0x24]
sub ecx, ebx
mov edx, 1
shl edx, cl
mov ecx, ebx
shr eax, cl
cmp eax, dword [esp + 0x3c]
jae 0x409ea7
lea ecx, [ebp + eax*8]
mov edi, dword [esp + 0x30]
add eax, edx
mov dword [ecx], edi
lea edi, [edx*8]
mov dword [ecx + 4], esi
add ecx, edi
cmp eax, dword [esp + 0x3c]
jb 0x409e8d
mov edx, dword [esp + 0x14]
mov eax, 1
lea ecx, [edx - 1]
mov edx, dword [esp + 0x24]
shl eax, cl
test edx, eax
je 0x409ec5
xor edx, eax
shr eax, 1
test edx, eax
jne 0x409ebd
mov edi, 1
mov ecx, ebx
xor edx, eax
mov eax, dword [esp + 0x18]
shl edi, cl
mov ecx, dword [esp + eax*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov dword [esp + 0x24], edx
dec edi
and edi, edx
cmp edi, ecx
je 0x409f11
mov edi, dword [esp + 0x18]
sub eax, 4
dec edi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x10]
sub ebx, edi
mov edi, 1
mov ecx, ebx
shl edi, cl
mov ecx, dword [eax]
dec edi
and edi, edx
cmp edi, ecx
jne 0x409eed
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov ecx, eax
dec eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
test ecx, ecx
jne 0x409ced
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edx
jle 0x409cd8
mov esi, dword [esp + 0x40]
xor ebp, ebp
cmp esi, ebp
je 0x409f69
cmp dword [esp + 0x2c], 1
je 0x409f69
mov eax, 0xfffffffb
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf0
ret
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf0
ret
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0xf0
ret