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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov edi, dword [esp + 0x78]
push 0x4df40
call fcn.00408d90
add esp, 4
mov dword [edi], 0
xor ebx, ebx
test eax, eax
je 0x40550e
mov esi, eax
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
imul ecx, dword [esp + 0x6c]
mov dword [esp + 4], 0
mov dword [esp + 0x10], 1
lea eax, [ecx + 1]
mov edx, 0xfffffffe
mov dword [esp + 0x18], ecx
sub edx, ecx
and edx, edi
mov ecx, edi
not ecx
and ecx, eax
imul ecx, edx
mov edx, eax
and edx, edi
or eax, edi
imul eax, edx
lea edx, [eax + ecx]
mov ebp, 0x79
cmp edx, 0x40
jl 0x404fcc
lea ebp, [eax + ecx]
add ebp, 0x39
mov dword [esp + 8], ebp
push ebp
call fcn.00408d90
add esp, 4
mov dword [esp + 0xc], eax
test eax, eax
je 0x4053d5
mov ecx, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], 0x29
xor edi, edi
mov dl, 0x29
mov ebx, 0x29
jmp 0x405037
push ebp
push ecx
mov dword [esp + 0x28], ecx
call fcn.00408db0
add esp, 8
test eax, eax
je 0x405069
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebp
mov ecx, eax
movzx edx, byte [esp + 3]
mov byte [eax + edi], dl
mov dword [esp + 4], esi
mov ebx, dword [esp + 0x1c]
mov edi, esi
dec ebx
mov dword [esp + 0x1c], ebx
mov edx, ebx
je 0x405077
lea esi, [edi + 1]
cmp esi, ebp
jbe 0x405021
cmp dword [esp + 0x10], 0
je 0x405065
mov byte [esp + 3], dl
mov dword [esp + 0x24], ebp
jmp 0x405054
cmp esi, ebp
jbe 0x405000
add ebp, ebp
cmp ebp, 0x81
jae 0x405050
mov ebp, 0x80
jmp 0x405050
mov esi, edi
jmp 0x40502c
mov ecx, dword [esp + 0x20]
mov eax, ecx
mov esi, edi
mov ebp, dword [esp + 0x24]
jmp 0x40502c
mov eax, dword [esp + 0x7c]
cmp eax, 0xa
jb 0x405085
mov eax, 0xa
mov eax, dword [eax*4 + 0x443a54]
mov edi, eax
xor edi, 0x1000
add edi, eax
and eax, 0xffffefff
sub edi, eax
mov esi, dword [esp + 0x14]
mov dword [esi], 0x404ec0
lea eax, [esp + 4]
mov dword [esi + 4], eax
mov dword [esi + 8], edi
mov eax, edi
and eax, 0xfff
mov ecx, edi
and ecx, 2
mov edx, eax
xor edx, 2
lea ecx, [edx + ecx*2]
imul ecx, ecx, 0x5556
shr ecx, 0x10
inc ecx
mov dword [esi + 0xc], ecx
mov ecx, edi
shr ecx, 0xe
and ecx, 1
mov dword [esi + 0x14], ecx
shr eax, 2
imul eax, eax, 0x5556
add eax, 0xaaac
shr eax, 0x10
inc eax
mov dword [esi + 0x10], eax
test di, di
js 0x40510d
lea eax, [esi + 0x29272]
push 0x10000
push 0
push eax
call fcn.00408f20
add esp, 0xc
lea ecx, [esi + 0x9272]
lea edx, [esi + 0x9273]
lea eax, [esi + 0x39272]
mov dword [esi + 0x24], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x60], 0
mov dword [esi + 0x64], 0
mov dword [esi + 0x68], 0
mov dword [esi + 0x28], edx
mov dword [esi + 0x2c], ecx
mov byte [esi + 0x9272], 0
mov dword [esi + 0x38], 8
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x6c], 0
mov dword [esi + 0x54], 0
mov dword [esi + 0x50], 0
mov dword [esi + 0x4c], 0
mov dword [esi + 0x18], 1
mov dword [esi + 0x70], 0
mov dword [esi + 0x74], 0
mov dword [esi + 0x78], 0
mov dword [esi + 0x7c], 0
mov dword [esi + 0x80], 0
mov dword [esi + 0x84], 0
mov dword [esi + 0x88], 0
mov dword [esi + 0x8c], 0
test di, di
js 0x40520f
lea eax, [esi + 0x90]
push 0x8101
push 0
push eax
call fcn.00408f20
add esp, 0xc
mov eax, esi
add eax, 0x8192
push 0x280
push 0
push eax
call fcn.00408f20
add esp, 0xc
cmp dword [esp + 0x70], 0
jle 0x4052b4
mov ecx, dword [esp + 0x70]
mov eax, ecx
xor eax, 0xfffffffe
and ecx, 0xfffffffe
lea ebp, [eax + ecx*2]
inc ebp
xor edi, edi
lea ebx, [esp + 0x28]
jmp 0x405285
mov ecx, dword [esp + 0x18]
imul eax, ecx
add eax, dword [esp + 0x68]
mov dword [esp + 0x28], ecx
push 0
push 0
push 0
push ebx
push eax
mov esi, dword [esp + 0x28]
push esi
call fcn.004037e0
add esp, 0x18
mov eax, edi
and eax, 1
xor edi, 1
lea edi, [edi + eax*2]
cmp edi, dword [esp + 0x70]
jge 0x4052b4
mov dword [esp + 0x28], 1
push 0
push 0
push 0
push ebx
lea eax, [esp + 0x2c]
push eax
push esi
call fcn.004037e0
add esp, 0x18
mov eax, edi
cmp dword [esp + 0x80], 0
je 0x405250
mov eax, ebp
sub eax, edi
jmp 0x405250
mov dword [esp + 0x28], 0
lea edi, [esp + 0x28]
push 4
push 0
push 0
push edi
push 0
push esi
call fcn.004037e0
add esp, 0x18
cmp eax, 1
jne 0x4053e3
mov ebp, dword [esp + 4]
lea ebx, [ebp - 0x29]
mov eax, dword [esp + 0x78]
mov dword [eax], ebx
push 0x29
push 0x443a85
mov esi, edi
push edi
call fcn.00408dc0
add esp, 0xc
mov eax, dword [esp + 0x6c]
mov byte [esp + 0x3a], ah
mov byte [esp + 0x3b], al
mov eax, dword [esp + 0x70]
mov byte [esp + 0x3e], ah
mov byte [esp + 0x3f], al
mov eax, dword [esp + 0x74]
movzx eax, byte [eax + 0x443a80]
mov byte [esp + 0x41], al
mov eax, ebx
shr eax, 0x18
mov byte [esp + 0x49], al
mov eax, ebx
shr eax, 0x10
mov byte [esp + 0x4a], al
mov byte [esp + 0x4b], bh
mov byte [esp + 0x4c], bl
mov eax, 0xffffffff
mov ecx, 0xc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x28]
mov edi, eax
shr edi, 4
xor eax, edx
and eax, 0xf
xor edi, dword [eax*4 + 0x443a14]
mov eax, edi
shr eax, 4
mov ebx, edi
not ebx
or ebx, 0xf
add edi, ebx
inc edi
shr edx, 4
xor edx, edi
xor eax, dword [edx*4 + 0x443a14]
inc ecx
cmp ecx, 0x1d
jne 0x405350
not eax
bswap eax
mov dword [esp + 0x45], eax
mov edi, dword [esp + 0xc]
push 0x29
push esi
push edi
call fcn.00408dc0
add esp, 0xc
lea eax, [ebp + 0x10]
mov esi, dword [esp + 8]
cmp eax, esi
mov dword [esp + 0x18], eax
jbe 0x4053f5
cmp dword [esp + 0x10], 0
mov ebx, dword [esp + 0x14]
jne 0x4053c4
jmp 0x4054f0
cmp eax, esi
jbe 0x4053fb
add esi, esi
cmp esi, 0x81
jae 0x4053c0
mov esi, 0x80
jmp 0x4053c0
push esi
call fcn.00408da0
add esp, 4
jmp 0x40550e
push esi
call fcn.00408da0
add esp, 4
push dword [esp + 0xc]
jmp 0x405504
mov ebx, dword [esp + 0x14]
jmp 0x40541f
push esi
push edi
call fcn.00408db0
add esp, 8
test eax, eax
je 0x4054ec
mov edi, eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov ebp, dword [esp + 4]
mov eax, dword [esp + 0x18]
mov dword [edi + ebp + 0xc], 0x826042ae
mov dword [edi + ebp + 8], 0x444e4549
mov dword [edi + ebp + 4], 0
mov dword [edi + ebp], 0
mov dword [esp + 4], eax
mov edi, dword [esp + 0x78]
mov edx, dword [edi]
mov ecx, dword [esp + 0xc]
add edx, 4
je 0x4054a2
mov eax, 0xffffffff
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [ecx + esi + 0x25]
mov ebx, eax
shr ebx, 4
xor eax, edi
and eax, 0xf
xor ebx, dword [eax*4 + 0x443a14]
mov eax, ebx
shr eax, 4
mov ebp, ebx
not ebp
or ebp, 0xf
add ebx, ebp
inc ebx
shr edi, 4
xor edi, ebx
xor eax, dword [edi*4 + 0x443a14]
inc esi
cmp edx, esi
jne 0x405460
not eax
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x78]
jmp 0x4054a4
xor eax, eax
mov edx, eax
shr edx, 0x18
mov esi, dword [esp + 0x18]
mov byte [ecx + esi - 0x10], dl
mov ecx, eax
shr ecx, 0x10
mov edx, dword [esp + 4]
mov esi, dword [esp + 0xc]
mov byte [esi + edx - 0xf], cl
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov byte [edx + ecx - 0xe], ah
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov byte [edx + ecx - 0xd], al
add dword [edi], 0x39
push ebx
call fcn.00408da0
add esp, 4
mov ebx, dword [esp + 0xc]
jmp 0x40550e
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x78]
mov dword [eax], 0
push ebx
call fcn.00408da0
add esp, 4
push edi
call fcn.00408da0
add esp, 4
xor ebx, ebx
mov eax, ebx
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret