Function at 0x40e0a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x28
mov esi, dword [ebp + 0x18]
mov eax, dword [0x47f2fc]
test eax, eax
jne 0x40e30e
movzx eax, byte [0x45ff59]
xor al, 0x5c
mov byte [0x45ff5e], al
movzx eax, byte [0x45ff5a]
mov ecx, eax
add cl, al
and cl, 0x30
sub al, cl
add al, 0x98
mov byte [0x45ff5f], al
movzx eax, byte [0x45ff5b]
xor al, 0x50
mov byte [0x45ff60], al
movzx eax, byte [0x45ff5c]
xor al, 0xa3
mov byte [0x45ff61], al
movzx eax, byte [0x45ff5d]
xor al, 0x8c
mov byte [0x45ff62], al
movzx eax, byte [0x45ff00]
mov ecx, eax
add cl, al
and cl, 0xf0
sub al, cl
add al, 0x78
mov byte [0x45ff30], al
movzx eax, byte [0x45ff01]
xor al, 0xfa
mov byte [0x45ff31], al
movzx eax, byte [0x45ff02]
xor al, 0x68
mov byte [0x45ff32], al
movzx eax, byte [0x45ff03]
mov ecx, eax
add cl, al
and cl, 0xfa
sub al, cl
add al, 0xfd
mov byte [0x45ff33], al
movzx eax, byte [0x45ff04]
xor al, 0xd4
mov byte [0x45ff34], al
movzx eax, byte [0x45ff05]
xor al, 0xe
mov byte [0x45ff35], al
movzx eax, byte [0x45ff06]
mov ecx, eax
add cl, al
and cl, 0x8e
sub al, cl
add al, 0x47
mov ecx, 0xf9b8e1ed
xor ecx, dword [0x45ff07]
mov byte [0x45ff36], al
mov dword [0x45ff37], ecx
movzx eax, byte [0x45ff0b]
xor al, 0xa4
mov byte [0x45ff3b], al
movzx eax, byte [0x45ff0c]
xor al, 0xe7
mov byte [0x45ff3c], al
movzx eax, byte [0x45ff0d]
xor al, 0xad
mov byte [0x45ff3d], al
movzx eax, byte [0x45ff0e]
mov ecx, eax
add cl, al
and cl, 0x84
sub al, cl
add al, 0x42
mov byte [0x45ff3e], al
movzx eax, byte [0x45ff0f]
xor al, 0xa7
mov byte [0x45ff3f], al
movzx eax, byte [0x45ff10]
mov ecx, eax
add cl, al
and cl, 0x10
sub al, cl
add al, 8
mov byte [0x45ff40], al
mov eax, 0x44ce4d9c
xor eax, dword [0x45ff11]
mov dword [str._us], eax
movzx eax, byte [0x45ff15]
xor al, 0x4d
mov byte [0x45ff45], al
movzx eax, byte [0x45ff16]
mov ecx, eax
add cl, al
and cl, 0xb4
sub al, cl
add al, 0xda
mov byte [0x45ff46], al
movzx eax, byte [0x45ff17]
xor al, 0x6f
mov byte [0x45ff47], al
movzx eax, byte [0x45ff18]
xor al, 3
mov byte [0x45ff48], al
movzx eax, byte [0x45ff19]
xor al, 0x5c
mov byte [0x45ff49], al
movzx eax, byte [0x45ff1a]
mov ecx, eax
add cl, al
and cl, 0x16
sub al, cl
add al, 0x8b
mov ecx, 0x1cb34d3d
xor ecx, dword [0x45ff1b]
mov byte [0x45ff4a], al
mov dword [0x45ff4b], ecx
movzx eax, byte [0x45ff1f]
mov ecx, eax
not cl
or cl, 0x60
or al, 0x9f
and al, cl
mov byte [0x45ff4f], al
movsd xmm0, qword [str.untWr]
xorps xmm0, xmmword [str.untW]
movlps qword [0x45ff50], xmm0
movzx eax, byte [0x45ff28]
xor al, 0xd8
mov byte [0x45ff58], al
movaps xmm0, xmmword [0x45fea0]
xorps xmm0, xmmword [0x45c150]
movaps xmmword [0x45fed0], xmm0
movaps xmm0, xmmword [0x45feb0]
xorps xmm0, xmmword [0x45c160]
movaps xmmword [0x45fee0], xmm0
movsd xmm0, qword [0x45fec0]
xorps xmm0, xmmword [0x45c170]
movlps qword [0x45fef0], xmm0
mov eax, 0x7232acba
xor eax, dword [0x45fec8]
mov dword [0x45fef8], eax
mov dword [0x47f2fc], 1
push eax
sub esp, 0xc
mov edi, esp
push eax
mov dword [ebp - 0x18], esp
sub esp, 0x2c
mov dword [ebp - 0x28], esp
push 0x4df40
call fcn.00417680
add esp, 4
mov ecx, eax
mov dword [esi], 0
xor eax, eax
test ecx, ecx
je 0x40e7f4
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
mov ecx, edx
not ecx
and ecx, esi
mov eax, esi
not eax
and eax, edx
imul eax, ecx
mov ecx, edx
and ecx, esi
or edx, esi
imul edx, ecx
mov esi, dword [ebp + 0x10]
add edx, eax
mov eax, esi
not eax
lea ecx, [edx + 1]
and eax, ecx
mov ebx, ecx
or ecx, esi
and ebx, esi
imul ebx, ecx
mov ecx, 0xfffffffe
mov dword [ebp - 0x24], edx
sub ecx, edx
and ecx, esi
imul ecx, eax
add ecx, ebx
cmp ecx, 0x41
mov eax, 0x40
cmovge eax, ecx
mov dword [edi], 0
mov dword [edi + 0xc], 1
add eax, 0x39
mov dword [edi + 4], eax
push eax
call fcn.00417680
add esp, 4
mov dword [edi + 8], eax
test eax, eax
je 0x40e7b9
mov ecx, edi
mov edx, dword [ebp - 0x18]
mov dword [edx], 0x29
xor eax, eax
mov byte [ebp - 0x1c], 0x29
mov ebx, 0x29
mov dword [ebp - 0x10], edi
jmp 0x40e404
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 8]
mov edi, dword [ebp - 0x20]
movzx ebx, byte [ebp - 0x1c]
mov byte [eax + edi], bl
mov dword [ecx], esi
mov ebx, dword [edx]
mov eax, esi
dec ebx
mov dword [edx], ebx
mov esi, edx
mov edx, ebx
mov byte [ebp - 0x1c], bl
mov edx, esi
je 0x40e45d
lea esi, [eax + 1]
mov edi, dword [ecx + 4]
cmp esi, edi
jbe 0x40e3e0
cmp dword [ecx + 0xc], 0
je 0x40e44e
mov dword [ebp - 0x20], eax
mov eax, 0x80
nop dword [eax]
test edi, 0x7fffffc0
lea edi, [edi + edi]
cmove edi, eax
cmp esi, edi
ja 0x40e420
push edi
push dword [ecx + 8]
call fcn.004176a0
add esp, 8
test eax, eax
je 0x40e452
mov ecx, dword [ebp - 0x10]
mov dword [ecx + 8], eax
mov dword [ecx + 4], edi
mov edx, dword [ebp - 0x18]
jmp 0x40e3e6
mov esi, eax
jmp 0x40e3f4
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
jmp 0x40e3f4
mov edx, dword [ebp + 0x1c]
cmp edx, 0xa
mov eax, 0xa
cmovb eax, edx
mov eax, dword [eax*4 + 0x45fed0]
mov ebx, eax
xor ebx, 0x1000
add ebx, eax
and eax, 0xffffefff
sub ebx, eax
mov edi, dword [ebp - 0x14]
mov dword [edi], 0x40df30
mov esi, ecx
mov ecx, ebx
xor ecx, 0xfffff000
mov eax, ebx
or eax, 0xfff
and eax, ecx
add eax, 2
mov ecx, 0x55555556
imul ecx
mov dword [edi + 4], esi
mov dword [edi + 8], ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
inc eax
mov dword [edi + 0xc], eax
mov eax, ebx
shr eax, 0xe
and eax, 1
mov dword [edi + 0x14], eax
mov eax, ebx
shr eax, 2
and eax, 0x3ff
add eax, 2
imul eax, eax, 0x5556
shr eax, 0x10
inc eax
mov dword [edi + 0x10], eax
test bx, bx
js 0x40e4fa
lea eax, [edi + 0x29272]
push 0x10000
push 0
push eax
call fcn.004179c0
add esp, 0xc
lea eax, [edi + 0x9272]
lea ecx, [edi + 0x9273]
xorps xmm0, xmm0
movups xmmword [edi + 0x3c], xmm0
movups xmmword [edi + 0x58], xmm0
mov dword [edi + 0x68], 0
mov dword [edi + 0x28], ecx
mov dword [edi + 0x2c], eax
mov byte [edi + 0x9272], 0
mov dword [edi + 0x38], 8
lea eax, [edi + 0x39272]
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], eax
mov dword [edi + 0x6c], 0
mov dword [edi + 0x54], 0
mov dword [edi + 0x50], 0
mov dword [edi + 0x4c], 0
movaps xmm1, xmmword [0x45c100]
movups xmmword [edi + 0x18], xmm1
movups xmmword [edi + 0x70], xmm0
movups xmmword [edi + 0x80], xmm0
test bx, bx
js 0x40e585
lea eax, [edi + 0x90]
push 0x8101
push 0
push eax
call fcn.004179c0
add esp, 0xc
mov eax, edi
add eax, 0x8192
push 0x280
push 0
push eax
call fcn.004179c0
add esp, 0xc
cmp dword [ebp + 0x10], 0
mov ecx, edi
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp + 0x20]
jle 0x40e629
mov eax, dword [ebp - 0x24]
not eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0x10]
lea edi, [eax - 1]
xor ebx, ebx
nop word [eax + eax]
mov dword [ebp - 0x2c], 1
push 0
push 0
push 0
lea eax, [ebp - 0x2c]
push eax
push edx
push ecx
call fcn.00403ce0
add esp, 0x18
test esi, esi
mov eax, edi
cmove eax, ebx
mov edx, eax
and edx, dword [ebp - 0x1c]
mov ecx, eax
not ecx
mov esi, dword [ebp - 0x24]
and ecx, esi
imul ecx, edx
mov edx, eax
and edx, esi
or eax, esi
imul eax, edx
add eax, dword [ebp + 8]
add eax, ecx
mov dword [ebp - 0x30], esi
mov esi, dword [ebp + 0x20]
push 0
push 0
push 0
lea ecx, [ebp - 0x30]
push ecx
push eax
push dword [ebp - 0x14]
call fcn.00403ce0
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
add esp, 0x18
inc ebx
add edi, 0xffffffff
jb 0x40e5c0
mov dword [ebp - 0x34], 0
lea eax, [ebp - 0x34]
push 4
push 0
push 0
push eax
push 0
push ecx
mov edi, ecx
call fcn.00403ce0
add esp, 0x18
cmp eax, 1
jne 0x40e7be
mov esi, dword [ebp - 0x10]
mov eax, dword [esi]
add eax, 0xffffffd7
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
movaps xmm0, xmmword [0x45ff40]
mov ebx, dword [ebp - 0x28]
movups xmmword [ebx + 0x10], xmm0
movups xmm0, xmmword [0x45ff49]
movups xmmword [ebx + 0x19], xmm0
movaps xmm0, xmmword [0x45ff30]
movups xmmword [ebx], xmm0
mov ecx, dword [ebp + 0xc]
mov byte [ebx + 0x12], ch
mov byte [ebx + 0x13], cl
mov ecx, dword [ebp + 0x10]
mov byte [ebx + 0x16], ch
mov byte [ebx + 0x17], cl
mov ecx, dword [ebp + 0x14]
movzx ecx, byte [ecx + 0x45ff5e]
mov byte [ebx + 0x19], cl
mov ecx, eax
shr ecx, 0x18
mov byte [ebx + 0x21], cl
mov ecx, eax
shr ecx, 0x10
mov byte [ebx + 0x22], cl
mov byte [ebx + 0x23], ah
mov byte [ebx + 0x24], al
mov eax, ebx
add eax, 0xc
push 0x11
push eax
push 0
call fcn.00402f70
add esp, 0xc
mov ecx, eax
shr ecx, 0x18
mov byte [ebx + 0x1d], cl
mov ecx, eax
shr ecx, 0x10
mov byte [ebx + 0x1e], cl
mov ecx, esi
mov byte [ebx + 0x1f], ah
mov byte [ebx + 0x20], al
mov edi, dword [esi + 8]
movups xmm0, xmmword [ebx + 0x19]
movups xmmword [edi + 0x19], xmm0
movups xmm0, xmmword [ebx + 0x10]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [ebx]
movups xmmword [edi], xmm0
mov eax, dword [esi]
mov ebx, dword [ecx + 4]
lea esi, [eax + 0x10]
cmp esi, ebx
jbe 0x40e74f
cmp dword [ecx + 0xc], 0
je 0x40e7d5
mov eax, 0x80
nop word cs:[eax + eax]
test ebx, 0x7fffffc0
lea ebx, [ebx + ebx]
cmove ebx, eax
cmp esi, ebx
ja 0x40e720
push ebx
push edi
call fcn.004176a0
add esp, 8
test eax, eax
je 0x40e7cf
mov edi, eax
mov ecx, dword [ebp - 0x10]
mov dword [ecx + 8], eax
mov dword [ecx + 4], ebx
mov eax, dword [ecx]
movups xmm0, xmmword [0x45d9a0]
movups xmmword [edi + eax], xmm0
mov dword [ecx], esi
mov edi, dword [ebp + 0x18]
mov eax, dword [edi]
mov ebx, ecx
mov ecx, dword [ecx + 8]
add eax, 4
add ecx, 0x25
push eax
push ecx
push 0
call fcn.00402f70
add esp, 0xc
mov ecx, eax
shr ecx, 0x18
mov edx, dword [ebx]
mov esi, dword [ebx + 8]
mov byte [esi + edx - 0x10], cl
mov ecx, eax
shr ecx, 0x10
mov edx, dword [ebx]
mov esi, dword [ebx + 8]
mov byte [esi + edx - 0xf], cl
mov ecx, dword [ebx]
mov edx, dword [ebx + 8]
mov byte [edx + ecx - 0xe], ah
mov ecx, dword [ebx]
mov edx, dword [ebx + 8]
mov byte [edx + ecx - 0xd], al
add dword [edi], 0x39
push dword [ebp - 0x14]
call fcn.00417690
add esp, 4
mov eax, dword [ebx + 8]
jmp 0x40e7f4
push dword [ebp - 0x14]
jmp 0x40e7ea
push edi
call fcn.00417690
add esp, 4
mov eax, dword [ebp - 0x10]
push dword [eax + 8]
jmp 0x40e7ea
mov eax, dword [ebp - 0x10]
mov edi, dword [eax + 8]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
push dword [ebp - 0x14]
call fcn.00417690
add esp, 4
push edi
call fcn.00417690
add esp, 4
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret