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], 0x61abb946
mov dword [esp + 0x2c], 0xbdbdbbb5
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x5d
mov dword [esp + 0x31], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
ja 0x40b493
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xead39538
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xe3
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xd
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], 0x22962478
mov dword [esp + 0x2c], 0x3ead2091
mov dword [esp + 0x30], 0x3a8f3c82
mov dword [esp + 0x34], 0x364c38b7
mov dword [esp + 0x38], 0x32bc349b
mov dword [esp + 0x3c], 0xe8c3083
mov dword [esp + 0x40], 0xa6d0c49
mov dword [esp + 0x44], 0x6b908aa
mov dword [esp + 0x48], 0x2b104b7
mov dword [esp + 0x4c], 0x1ebe00ba
mov dword [esp + 0x50], 0x1a911cbe
mov dword [esp + 0x54], 0x16aa18a2
mov dword [esp + 0x58], 0x126614a5
mov dword [esp + 0x5c], 0x6e64109b
mov dword [esp + 0x60], 0x6ae66ce4
mov dword [esp + 0x64], 0x661c68e0
mov dword [esp + 0x68], 0x62d664dd
mov dword [esp + 0x6c], 0x7ed460ed
mov dword [esp + 0x70], 0x7af07c0a
mov dword [esp + 0x74], 0x76cd78f5
mov dword [esp + 0x78], 0x72c774ca
mov dword [esp + 0x7c], 0x4ec270cc
mov dword [esp + 0x80], 0x4af04cf3
mov dword [esp + 0x84], 0x465c48f7
mov dword [esp + 0x88], 0x42454451
mov dword [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x67
ja 0x40b5f7
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx + edx]
add edi, 0x73a1d009
add ecx, 0x73a1d009
and ecx, edx
mov edx, edi
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, edi
sub ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0xd2
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], 0x58fe5e0a
mov dword [esp + 0x10], 0x44f25ac9
mov word [esp + 0x14], 0x4645
mov dword [esp + 0x16], 0
mov byte [esp + 0x1a], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xe
ja 0x40b673
nop
nop
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, 0xa1f95b69
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0xcc
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xf
jb 0x40b640
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040c2a0
add esp, 0x1c
test al, al
je 0x40b7c4
mov dword [esp], 0xb7c1c4
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x40b6e1
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx]
add eax, 0x2f8d5eb0
xor eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add al, 0xfb
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x40b6b0
xor eax, eax
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax]
test dl, dl
je 0x40b700
inc eax
cmp dl, dh
je 0x40b6f0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40b9a2
mov dword [esp + 0x28], 0xd62627d4
mov dword [esp + 0x2c], 0x46d9d5de
mov dword [esp + 0x30], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40b785
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, 0xcd78a858
add eax, 0xcd78a858
and eax, ecx
mov ecx, edx
not ecx
and ecx, eax
add ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xe7
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40b740
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40b7cb
mov edx, esi
mov ecx, eax
jmp 0x40b7a7
movzx ebx, byte [edx]
test bl, bl
je 0x40b7cd
mov bh, byte [eax]
test bh, bh
je 0x40b99a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40b7be
mov ecx, edi
mov eax, edi
je 0x40b7a0
mov edx, esi
jmp 0x40b7a0
xor eax, eax
jmp 0x40b9b2
mov ecx, eax
test ecx, ecx
je 0x40b99a
mov dword [esp + 0x28], 0xbecf9e9
mov dword [esp + 0x2c], 0x1e04cae2
mov dword [esp + 0x30], 0xcecf1710
mov dword [esp + 0x34], 0x17190d15
mov dword [esp + 0x38], 0xb6c7ed06
mov dword [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x17
ja 0x40b84e
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]
add eax, 0x3275b5fd
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x5a
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x18
jb 0x40b820
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40b894
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40b877
movzx ecx, byte [edx]
test cl, cl
je 0x40b896
mov ch, byte [eax]
test ch, ch
je 0x40b99a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40b88e
mov esi, ebx
mov eax, ebx
je 0x40b870
mov edx, edi
jmp 0x40b870
mov esi, eax
test esi, esi
je 0x40b99a
mov dword [esp], 0xfdc4d9
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x40b8f1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx]
add eax, 0x9daacba
xor eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add al, 0xbf
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x40b8c0
movzx eax, byte [esp]
test al, al
je 0x40b930
add esi, 0x13
mov ebp, esp
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 [0x44bc04], 1
mov eax, 0x44bc06
jmp 0x40b9c3
test edi, edi
je 0x40b99a
mov byte [0x44bc04], 1
mov dword [esp + 0x28], 0
mov eax, 0x44bc06
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.0040d340
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44bc06], dx
cmp ebx, 0x1fb
ja 0x40b992
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40b963
lea eax, [ecx + 0x44bc06]
jmp 0x40b9c3
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043cd00
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44bc06]
mov word [eax], 0
jmp 0x40b9a2