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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa4
cmp dword [ecx + 0x20], 0
je 0x409e9c
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa0]
push 0xa
push 4
push ecx
push eax
call fcn.00409eb0
add esp, 0x10
mov ebx, eax
lea eax, [esi + 0x10]
push eax
call fcn.00406650
add esp, 4
mov ebp, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x9c], eax
lea eax, [ebp + 0x400]
push eax
call fcn.00408680
add esp, 4
mov edi, eax
mov dword [esp + 0x18], 0x15ede214
mov byte [esp + 0x1c], pe_nt_image_headers32
mov dword [esp + 0x1d], 0
mov word [esp + 0x21], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x409a1e
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
add eax, 0xb3e673eb
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x69
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x4099f0
lea eax, [esp + 0x18]
mov ecx, esi
push 0x44a85c
push eax
push edi
call fcn.004092b0
mov dword [esp + 0x18], 0x69cec4f4
mov word [esp + 0x1c], 0
mov byte [esp + 0x1e], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x409a8e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
add eax, 0xc4713897
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xd
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x409a60
mov ecx, esi
push ebx
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.004092b0
mov eax, dword [str.yQGQOU__Iamonster]
mov dword [esp + 0x18], 0xd9bea4b8
mov word [esp + 0x1c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 5
ja 0x409af0
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x18]
add ecx, 0x85c30a4f
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov edx, dword [esp]
mov byte [esp + edx + 0x18], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 6
jb 0x409ac0
mov ecx, esi
push eax
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.004092b0
mov dword [esp + 0x18], 0xab5cac5f
mov dword [esp + 0x1c], 0x54a750af
mov dword [esp + 0x20], 0xa25da057
mov byte [esp + 0x24], 0xc4
mov dword [esp + 0x25], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x10
ja 0x409b85
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
lea edx, [eax + ecx]
add edx, 0xe0b86d52
add eax, 0xe0b86d52
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x66
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x11
jb 0x409b40
mov dword [esp + 8], 0x33ced2d1
mov byte [esp + 0xc], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 4
ja 0x409bec
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + ecx]
add eax, 0x74
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x53266074
mov dword [esp], edx
mov eax, dword [esp]
add al, 0xbc
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 8], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 5
jb 0x409bb0
lea ebx, [esp + 8]
mov ecx, esi
lea eax, [esp + 0x18]
push eax
push ebx
push edi
call fcn.004092b0
mov dword [esp + 0x18], 0xc2c6c4ce
mov byte [esp + 0x1c], 0x28
mov dword [esp + 0x1d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x409c69
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x18]
mov edx, eax
and edx, 0x17fed377
xor eax, 0x97fed377
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xad
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x409c30
mov ecx, esi
push ebp
push dword [esp + 0xa0]
lea eax, [esp + 0x20]
push eax
push edi
call fcn.00409540
mov eax, dword [esi + 0x60]
mov dword [esp + 0x18], 0x41d74709
mov dword [esp + 0x1c], 0x4dde43d6
mov dword [esp + 0x20], 0x49d84fe3
mov dword [esp + 0x24], 0xb51d4bd4
mov dword [esp + 0x28], 0xb12db708
mov dword [esp + 0x2c], 0xbd1db320
mov dword [esp + 0x30], 0xb9debfe6
mov dword [esp + 0x34], 0xa525bb2f
mov dword [esp + 0x38], 0xa13aa730
mov dword [esp + 0x3c], 0xad32a30b
mov dword [esp + 0x40], 0xa93caf0f
mov dword [esp + 0x44], 0x95fbab34
mov dword [esp + 0x48], 0x9107973a
mov dword [esp + 0x4c], 0x9d059302
mov dword [esp + 0x50], 0x99329fcb
mov dword [esp + 0x54], 0x85069b3b
mov dword [esp + 0x58], 0x81c38727
mov dword [esp + 0x5c], 0x8d2083e0
mov dword [esp + 0x60], 0x89118f1d
mov dword [esp + 0x64], 0xf5268b1e
mov dword [esp + 0x68], 0xf164f757
mov dword [esp + 0x6c], 0xfdb5f36b
mov dword [esp + 0x70], 0xf951ff5e
mov dword [esp + 0x74], 0xe5a5fba0
mov dword [esp + 0x78], 0xe149e748
mov dword [esp + 0x7c], 0xed49e3bf
mov dword [esp + 0x80], 0xe942ef7c
mov dword [esp + 0x84], 0xd547eb79
mov dword [esp + 0x88], 0xd179d77f
mov dword [esp + 0x8c], 0xdd40d342
mov dword [esp + 0x90], 0xd98ddf73
mov dword [esp + 0x94], 0xc5d0dbaf
mov dword [esp + 0x98], 0xc7c4
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x83
ja 0x409de3
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x18]
add ecx, 0x299e1cf1
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x4b
mov edx, dword [esp]
mov byte [esp + edx + 0x18], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x84
jb 0x409db0
mov dword [esp + 8], 0x21c527f5
mov dword [esp + 0xc], 0xddb923b0
mov word [esp + 0x10], 0xdfdc
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xe
ja 0x409e69
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 8]
lea ebp, [ecx + edx]
add ebp, 0x1dbbeaf9
add ecx, 0x1dbbeaf9
not edx
or ecx, edx
sub edx, ecx
lea ecx, [edx*2]
add ecx, ebp
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0x23
mov edx, dword [esp + 4]
mov byte [esp + edx + 8], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xf
jb 0x409e20
push 0x493e0
push eax
push edi
push 0
push 0
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.0040c580
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408690
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x409e9e
mov bl, 1
mov eax, ebx
add esp, 0xa4
pop esi
pop edi
pop ebx
pop ebp
ret