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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 0x28], 0xd21a0639
mov dword [esp + 0x2c], 0xe080c00
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x90
mov word [esp + 0x31], 0
mov byte [esp + 0x33], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xb
ja 0x40b493
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x9c9a8ea6
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xc2
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
jb 0x40b460
lea eax, [esp + 0x1c]
lea esi, [esp + 0x28]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x24], cl
mov dword [esp + 0x28], 0x77e50947
mov dword [esp + 0x2c], 0x73ee75e6
mov dword [esp + 0x30], 0x7fec71dd
mov dword [esp + 0x34], 0x7b2f7de0
mov dword [esp + 0x38], 0x67ff79c4
mov dword [esp + 0x3c], 0x63cf65f4
mov dword [esp + 0x40], 0x6f0e6126
mov dword [esp + 0x44], 0x6bfa6dcd
mov dword [esp + 0x48], 0x57c269f8
mov dword [esp + 0x4c], 0x53fd55fd
mov dword [esp + 0x50], 0x5fc251f1
mov dword [esp + 0x54], 0x5bc95df5
mov dword [esp + 0x58], 0x471559ca
mov dword [esp + 0x5c], 0x431745dc
mov dword [esp + 0x60], 0x4fd541db
mov dword [esp + 0x64], 0x4b1f4dd7
mov dword [esp + 0x68], 0xb72549e2
mov dword [esp + 0x6c], 0xb327b52a
mov dword [esp + 0x70], 0xbf23b1e5
mov dword [esp + 0x74], 0xbb2ebd22
mov dword [esp + 0x78], 0xa734b915
mov dword [esp + 0x7c], 0xa331a50b
mov dword [esp + 0x80], 0xaf03a10c
mov dword [esp + 0x84], 0xabdfad00
mov dword [esp + 0x88], 0x9796a9de
mov dword [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x67
ja 0x40b5e0
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
add ecx, 0xc491b9be
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x4a
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x68
jb 0x40b5b0
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0xf95dfbd5
mov dword [esp + 0x10], 0xfd61ff68
mov dword [esp + 0x14], 0xf3fc
mov byte [esp + 0x18], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xc
ja 0x40b653
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
add edx, 0xdeaa137f
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0x85
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xd
jb 0x40b620
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040c120
add esp, 0x1c
test al, al
je 0x40b7a4
mov word [esp + 0x28], 0x615
mov byte [esp + 0x2a], 0xea
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40b6ce
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x12d8b227
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x3d
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40b6a0
xor eax, eax
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40b6f1
inc eax
cmp dl, dh
je 0x40b6e0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40b9a2
mov dword [esp + 0x28], 0x85777081
mov dword [esp + 0x2c], 0x574767f
mov word [esp + 0x30], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x40b75e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xd8a6f03
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xf1
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x40b730
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40b7ab
mov edx, esi
mov ecx, eax
jmp 0x40b787
movzx ebx, byte [edx]
test bl, bl
je 0x40b7ad
mov bh, byte [eax]
test bh, bh
je 0x40b99a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40b79e
mov ecx, edi
mov eax, edi
je 0x40b780
mov edx, esi
jmp 0x40b780
xor eax, eax
jmp 0x40b9b2
mov ecx, eax
test ecx, ecx
je 0x40b99a
mov dword [esp + 0x28], 0xda23e81a
mov dword [esp + 0x2c], 0x2fd39bf1
mov dword [esp + 0x30], 0x9f902623
mov dword [esp + 0x34], 0x262edc26
mov dword [esp + 0x38], 0xa788fcd5
mov dword [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x17
ja 0x40b845
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 + 0x28]
lea edx, [eax + ecx]
add edx, 0x615c911e
add eax, 0x615c911e
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 + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x6a
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x18
jb 0x40b800
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40b884
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40b867
movzx ecx, byte [edx]
test cl, cl
je 0x40b886
mov ch, byte [eax]
test ch, ch
je 0x40b99a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40b87e
mov esi, ebx
mov eax, ebx
je 0x40b860
mov edx, edi
jmp 0x40b860
mov esi, eax
test esi, esi
je 0x40b99a
mov word [esp + 0x28], 0x79a2
mov byte [esp + 0x2a], 0xba
mov word [esp + 0x2b], 0
mov byte [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40b8ee
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x6381405f
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x25
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40b8c0
movzx eax, byte [esp + 0x28]
test al, al
je 0x40b930
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40b917
movzx eax, byte [ecx]
test al, al
je 0x40b941
mov ah, byte [edx]
test ah, ah
je 0x40b99a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40b92a
mov edi, ebx
mov edx, ebx
je 0x40b910
mov ecx, ebp
jmp 0x40b910
mov byte [0x440ae0], 1
mov eax, 0x440ae2
jmp 0x40b9c3
test edi, edi
je 0x40b99a
mov byte [0x440ae0], 1
mov dword [esp + 0x28], 0
mov eax, 0x440ae2
cmp esi, edi
jae 0x40b9c3
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40b9bd
push ebp
push edi
push esi
call fcn.0040d200
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x440ae2], dx
cmp ebx, 0x1fb
ja 0x40b992
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40b963
lea eax, [ecx + 0x440ae2]
jmp 0x40b9c3
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.004328b0
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x440ae2]
mov word [eax], 0
jmp 0x40b9a2