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

Disassembly:
sub esp, 0x160
push ebx
push ebp
push esi
push edi
push 0x2800
call fcn.00449731
mov ebx, dword [0x457380]
add esp, 4
xor esi, esi
push esi
push esi
push 0x147
mov edi, eax
mov eax, dword [0x4de56c]
push 0xd
push eax
call ebx
push eax
call dword [0x4572c4]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x174], esi
je 0x4045f6
mov eax, dword [0x52bb30]
mov dword [esp + 0x18], eax
mov ebp, 0x4de670
jmp 0x404668
mov ecx, dword [eax*4 + 0x52bb34]
mov ebp, dword [eax*4 + 0x4dea04]
mov dword [esp + 0x18], ecx
call fcn.00404500
cmp dword [esp + 0x18], esi
je 0x404633
mov eax, 3
cmp dword [0x4b9de8], eax
jge 0x404626
cmp dword [esp + 0x1c], eax
jae 0x404633
mov edx, dword [0x4de56c]
push 1
push 0xe
push edx
jmp 0x40463d
mov eax, dword [0x4de56c]
push 0
push 0xe
push eax
call ebx
push eax
call dword [0x45734c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [0x4de56c]
push 0
push ecx
push 0x144
push 0xd
push edx
call ebx
push eax
call dword [0x4572c4]
mov eax, dword [esp + 0x18]
cmp eax, 3
jne 0x40537f
mov eax, dword [0x52be40]
push eax
push str._s:
push edi
call fcn.004499de
add esp, 0xc
mov esi, eax
push 1
lea ebx, [edi + esi*2]
push 1
push 0x48
lea edx, [ebp + 0x60]
mov eax, ebx
call fcn.00412610
mov eax, ebx
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4046a2
movzx ecx, word [ebp + 0xb0]
sub eax, edx
mov edx, dword [0x52be58]
push ecx
sar eax, 1
push edx
add esi, eax
lea eax, [edi + esi*2]
push str._r_n_s:__hu_r_n
push eax
call fcn.004499de
mov cx, word [ebp + 0xae]
movzx edx, byte [ebp + 0xad]
add esi, eax
xor eax, eax
mov word [esp + 0x34], cx
mov ecx, dword [0x52bcb0]
mov dword [esp + 0x36], eax
mov dword [esp + 0x3a], eax
push ecx
mov dword [esp + 0x42], eax
mov word [esp + 0x46], ax
movzx eax, byte [ebp + 0xac]
mov word [esp + 0x3a], dx
lea edx, [edi + esi*2]
push str._s:
push edx
mov word [esp + 0x46], ax
call fcn.004499de
add esp, 0x1c
push 0x64
add esi, eax
lea eax, [edi + esi*2]
push eax
push 0
lea ecx, [esp + 0x30]
push ecx
push 1
push 0x400
call dword [0x4571e0]
cmp byte [ebp + 0xb4], 3
lea esi, [esi + eax - 1]
mov eax, dword [0x52bfbc]
je 0x404754
mov eax, dword [0x52bfc0]
mov edx, dword [0x52be54]
push eax
push edx
lea eax, [edi + esi*2]
push str._r_n_s:__s_r_n
push eax
call fcn.004499de
movzx ebx, byte [ebp + 0xb3]
add esp, 0x10
add esi, eax
test ebx, ebx
jne 0x404782
mov ecx, dword [0x52bfac]
jmp 0x4047b8
cmp ebx, 1
jne 0x404791
mov dword [esp + 0x10], 0x496400
jmp 0x4047bc
cmp ebx, 2
jne 0x4047a2
mov edx, dword [0x52be5c]
mov dword [esp + 0x10], edx
jmp 0x4047bc
cmp ebx, 3
jne 0x4047b2
mov eax, dword [0x52be60]
mov dword [esp + 0x10], eax
jmp 0x4047bc
mov ecx, dword [0x52bfb4]
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x10]
mov eax, dword [0x52be4c]
push edx
push eax
lea ecx, [edi + esi*2]
push str._s:__s
push ecx
call fcn.004499de
mov edx, dword [esp + 0x20]
add esi, eax
mov eax, dword [esp + 0x2c]
push edx
inc eax
push eax
lea ecx, [esp + 0x88]
push str._u____s
push ecx
call fcn.004499de
add esp, 0x20
cmp ebx, 1
jne 0x405259
mov eax, dword [ebp + 8]
movzx ebx, word [ebp + 0x1a]
push eax
cmp eax, 9
jae 0x404827
mov edx, dword [0x52bf94]
push edx
lea eax, [edi + esi*2]
push str._r_n____________r_n_s:__u_r_n
push eax
call fcn.004499de
add esp, 0x10
jmp 0x404840
mov ecx, dword [0x52bf94]
push eax
push ecx
lea edx, [edi + esi*2]
push str._r_n____________r_n_s:_0x_X___u__r_n
push edx
call fcn.004499de
add esp, 0x14
add esi, eax
test ebx, ebx
je 0x404868
cmp ebx, 0x289
ja 0x404868
mov eax, dword [0x52bbd0]
imul eax, eax, 0x28a
add eax, ebx
mov ecx, dword [eax*4 + 0x4b9e2c]
mov dword [esp + 0x10], ecx
jmp 0x404872
mov edx, dword [0x52bfe0]
mov dword [esp + 0x10], edx
lea eax, [esp + 0x70]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x404880
mov ecx, dword [esp + 0x10]
sub eax, edx
push ecx
sar eax, 1
lea edx, [esp + eax*2 + 0x74]
push str.___s_
push edx
call fcn.004499de
mov eax, dword [esp + 0x1c]
mov ecx, dword [0x52bf98]
add esp, 0xc
push eax
push ecx
lea edx, [edi + esi*2]
push str._s:__s_r_n
push edx
call fcn.004499de
mov ecx, dword [0x52bc68]
add esi, eax
movzx eax, byte [ebp + 0x1d]
push ecx
lea edx, [edi + esi*2]
push str._s:
push edx
mov dword [esp + 0x34], eax
call fcn.004499de
add esi, eax
lea edx, [ebp + 0x1e]
mov eax, 0xffff
add esp, 0x1c
cmp word [edx], ax
jne 0x404955
mov eax, dword [esp + 0x18]
cmp eax, 1
jne 0x4048fc
jmp 0x404932
cmp eax, 2
jne 0x404905
xor eax, eax
jmp 0x404932
cmp eax, 3
jne 0x404911
mov eax, 2
jmp 0x404932
cmp eax, 4
jne 0x404918
jmp 0x404932
cmp eax, 5
jne 0x404924
mov eax, 3
jmp 0x404932
xor ecx, ecx
cmp eax, 7
setne cl
lea eax, [ecx - 1]
and eax, 5
imul eax, eax, 0x28a
add eax, ebx
mov edx, dword [eax*4 + 0x4b9e2c]
push edx
lea eax, [edi + esi*2]
push 0x4964c0
push eax
call fcn.004499de
add esp, 0xc
jmp 0x40497f
push 0
push 0
lea eax, [edi + esi*2]
push 0xb
call fcn.00412610
lea eax, [edi + esi*2]
add esp, 0xc
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x404970
sub eax, edx
sar eax, 1
add esi, eax
movzx eax, byte [ebp + 0x34]
cmp eax, 0xff
jne 0x404993
mov eax, dword [0x52bfe4]
jmp 0x4049b1
cmp eax, 0x18
jbe 0x40499f
mov eax, dword [0x52bfb4]
jmp 0x4049b1
mov ecx, dword [0x52bbd0]
imul ecx, ecx, 0x19
add ecx, eax
mov eax, dword [ecx*4 + 0x4b96f0]
mov edx, dword [0x52bf9c]
push eax
push edx
lea eax, [edi + esi*2]
push str._r_n_s:__s_r_n
push eax
call fcn.004499de
add esi, eax
movzx eax, word [ebp + 0x10]
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4049e0
mov ecx, dword [0x52bfac]
jmp 0x404a17
mov ecx, dword [0x52bfb4]
xor eax, eax
mov edx, dword [0x4b9ddc]
movzx edx, word [edx + eax*2]
cmp edx, dword [esp + 0x14]
je 0x404a02
inc eax
cmp eax, 0x26a
jb 0x4049e8
jmp 0x404a17
mov ecx, dword [0x52bbd0]
imul ecx, ecx, 0x26a
add ecx, eax
mov ecx, dword [ecx*4 + 0x4cf7a8]
mov edx, dword [0x52bc74]
push ecx
push edx
lea eax, [edi + esi*2]
push str._s:__s_r_n
push eax
call fcn.004499de
mov ecx, dword [0x52bfa0]
push ecx
add esi, eax
lea edx, [edi + esi*2]
push str._s:
push edx
call fcn.004499de
add esi, eax
movzx eax, byte [ebp + 0x36]
add esp, 0x1c
test eax, eax
jne 0x404a85
mov ecx, dword [0x52bbd0]
movzx eax, byte [ebx + ebx*2 + 0x4a425d]
imul ecx, ecx, 0xa5
add eax, ecx
mov edx, dword [eax*4 + 0x4d6b48]
push edx
lea eax, [edi + esi*2]
push str._s_r_n
push eax
call fcn.004499de
add esp, 0xc
jmp 0x404bd6
cmp eax, 1
jne 0x404abe
mov edx, dword [0x52bbd0]
movzx ecx, byte [ebx + ebx*2 + 0x4a425e]
imul edx, edx, 0xa5
add ecx, edx
mov eax, dword [ecx*4 + 0x4d6b48]
push eax
lea ecx, [edi + esi*2]
push str._s_r_n
push ecx
call fcn.004499de
add esp, 0xc
jmp 0x404bd6
cmp eax, 2
jne 0x404af6
mov eax, dword [0x52bbd0]
movzx edx, byte [ebx + ebx*2 + 0x4a425f]
imul eax, eax, 0xa5
add edx, eax
mov ecx, dword [edx*4 + 0x4d6b48]
push ecx
lea edx, [edi + esi*2]
push str._s_r_n
push edx
call fcn.004499de
add esp, 0xc
jmp 0x404bd6
cmp eax, 3
jne 0x404b7f
cmp byte [ebx + ebx*2 + 0x4a425e], 0
jne 0x404b3d
mov ecx, dword [0x52bbd0]
movzx eax, byte [ebx + ebx*2 + 0x4a425d]
imul ecx, ecx, 0xa5
add eax, ecx
mov edx, dword [eax*4 + 0x4d6b48]
push edx
lea eax, [edi + esi*2]
push str._s_r_n
push eax
call fcn.004499de
add esp, 0xc
jmp 0x404bd6
mov eax, dword [0x52bbd0]
movzx ecx, byte [ebx + ebx*2 + 0x4a425e]
imul eax, eax, 0xa5
add ecx, eax
mov edx, dword [ecx*4 + 0x4d6b48]
movzx ecx, byte [ebx + ebx*2 + 0x4a425d]
push edx
add ecx, eax
mov edx, dword [ecx*4 + 0x4d6b48]
push edx
lea eax, [edi + esi*2]
push str._s__s_r_n
push eax
call fcn.004499de
add esp, 0x10
jmp 0x404bd6
cmp eax, 4
jne 0x404bd8
mov eax, dword [0x52bbd0]
movzx ecx, byte [ebx + ebx*2 + 0x4a425f]
imul eax, eax, 0xa5
add ecx, eax
mov edx, dword [ecx*4 + 0x4d6b48]
movzx ecx, byte [ebx + ebx*2 + 0x4a425e]
push edx
add ecx, eax
mov edx, dword [ecx*4 + 0x4d6b48]
movzx ecx, byte [ebx + ebx*2 + 0x4a425d]
push edx
add ecx, eax
mov edx, dword [ecx*4 + 0x4d6b48]
push edx
lea eax, [edi + esi*2]
push str._s__s__s_r_n
push eax
call fcn.004499de
add esp, 0x14
add esi, eax
mov eax, dword [0x52bf60]
mov ecx, dword [0x52bf58]
mov edx, dword [0x52bf5c]
movzx ebx, byte [ebp + 4]
mov dword [esp + 0x3c], eax
mov eax, dword [0x52bf6c]
mov dword [esp + 0x48], eax
mov eax, dword [0x52bbd0]
mov dword [esp + 0x34], ecx
mov ecx, dword [0x52bf64]
mov dword [esp + 0x38], edx
mov edx, dword [0x52bf68]
lea eax, [eax + eax*8]
add eax, eax
add eax, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x4b9ba0]
mov dword [esp + 0x44], edx
mov edx, dword [eax + 0x4b9ba4]
mov dword [esp + 0x4c], ecx
mov ecx, dword [eax + 0x4b9ba8]
mov dword [esp + 0x50], edx
mov edx, dword [eax + 0x4b9bac]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 0x4b9bb0]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0x4b9bb4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + 0x4b9bb8]
mov dword [esp + 0x60], edx
mov edx, dword [eax + 0x4b9bbc]
mov eax, dword [eax + 0x4b9bc0]
mov dword [esp + 0x64], ecx
mov ecx, dword [0x52be64]
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], eax
test ebx, ebx
je 0x404c8c
mov ecx, dword [0x52bfb4]
xor eax, eax
mov edi, edi
movzx edx, byte [eax + 0x4a1bc0]
cmp edx, ebx
je 0x404ca3
inc eax
cmp eax, 0xf
jb 0x404c90
jmp 0x404ca7
mov ecx, dword [esp + eax*4 + 0x34]
mov eax, dword [0x52bc84]
push ecx
push eax
lea ecx, [edi + esi*2]
push str._s:__s_r_n
push ecx
call fcn.004499de
mov ecx, dword [esp + 0x28]
add esp, 0x10
add esi, eax
xor eax, eax
jmp 0x404cd0
movzx edx, byte [eax + 0x4a1bb8]
cmp edx, ecx
je 0x404ce1
inc eax
cmp eax, 7
jb 0x404cd0
mov eax, dword [0x52be64]
test ebx, ebx
je 0x404cef
mov eax, dword [0x52bfb4]
push eax
mov eax, dword [0x52bc80]
push eax
lea ecx, [edi + esi*2]
push str._s:__s_r_n
push ecx
call fcn.004499de
add esi, eax
movzx eax, byte [ebp + 0x35]
add esp, 0x10
test eax, eax
jne 0x404d18
mov eax, dword [0x52bf4c]
jmp 0x404d33
cmp eax, 1
jne 0x404d24
mov eax, dword [0x52bf50]
jmp 0x404d33
cmp eax, 2
mov eax, dword [0x52bfe4]
je 0x404d33
mov eax, dword [0x52bfb4]
mov edx, dword [0x52bfb0]
push eax
push edx
lea eax, [edi + esi*2]
push str._s:__s_r_n
push eax
call fcn.004499de
add esi, eax
movzx eax, byte [ebp + 0x37]
add esp, 0x10
test eax, eax
jne 0x404d5d
mov eax, dword [0x52bfc0]
jmp 0x404d78
cmp eax, 1
jne 0x404d69
mov eax, dword [0x52beb4]
jmp 0x404d78
cmp eax, 2
mov eax, dword [0x52bfbc]
je 0x404d78
mov eax, dword [0x52bfb4]
mov ecx, dword [0x52bfa4]
push eax
push ecx
lea edx, [edi + esi*2]
push str._s:__s_r_n
push edx
call fcn.004499de
movzx ebx, byte [ebp + 0x5c]
add esi, eax
mov eax, dword [0x52bfbc]
add esp, 0x10
test ebx, ebx
jne 0x404da5
mov eax, dword [0x52bfc0]
push eax
mov eax, dword [0x52bc8c]
push eax
lea ecx, [edi + esi*2]
push str._s:__s
push ecx
call fcn.004499de
add esp, 0x10
add esi, eax
test ebx, ebx
je 0x404de2
movzx eax, byte [ebp + 0x5b]
mov edx, dword [0x52bcac]
push eax
push edx
lea eax, [edi + esi*2]
push str.___s:__hu_
push eax
call fcn.004499de
add esp, 0x10
add esi, eax
mov edx, dword [0x52bfb4]
movzx ecx, word [ebp + 0x3a]
mov dword [esp + 0x10], edx
xor eax, eax
movzx edx, word [eax*2 + 0x4a21a0]
cmp edx, ecx
je 0x404e0c
inc eax
cmp eax, 0xf5
jb 0x404df2
mov ecx, dword [esp + 0x10]
jmp 0x404e21
mov ecx, dword [0x52bbd0]
imul ecx, ecx, 0xf5
add ecx, eax
mov ecx, dword [ecx*4 + 0x4c20c8]
movzx eax, byte [ebp + 0x3c]
mov edx, dword [0x52bcac]
push eax
mov eax, dword [0x52bca4]
push edx
push ecx
push eax
lea ecx, [edi + esi*2]
push str._r_n_r_n_s:__s___s:__hu__r_n
push ecx
call fcn.004499de
add esi, eax
movzx eax, byte [ebp + 0xe]
add esp, 0x18
dec eax
je 0x404e67
cmp eax, 0x19
ja 0x404e67
mov edx, dword [0x52bbd0]
imul edx, edx, 0x19
add edx, eax
mov eax, dword [edx*4 + 0x4b9948]
jmp 0x404e6c
mov eax, dword [0x52bfb4]
push eax
mov eax, dword [0x52bca8]
push eax
lea ecx, [edi + esi*2]
push str._s:__s_r_n
push ecx
call fcn.004499de
add esp, 0x10
add esi, eax
test ebx, ebx
je 0x404ee7
movzx ecx, word [ebp + 0x38]
mov edx, dword [0x52bfb4]
xor eax, eax
jmp 0x404ea0
movzx ebx, word [eax*2 + 0x4a21a0]
cmp ebx, ecx
je 0x404eb6
inc eax
cmp eax, 0xf5
jb 0x404ea0
jmp 0x404ecb
mov edx, dword [0x52bbd0]
imul edx, edx, 0xf5
add edx, eax
mov edx, dword [edx*4 + 0x4c20c8]
mov eax, dword [0x52be68]
push edx
push eax
lea ecx, [edi + esi*2]
push str._s:__s_r_n_r_n
push ecx
call fcn.004499de
add esp, 0x10
add esi, eax
jmp 0x404f05
mov eax, 0x49655c
lea edx, [esi + esi]
sub edx, eax
add edx, edi
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x404ef3
add esi, 2
mov eax, dword [0x52bdbc]
push eax
lea ecx, [edi + esi*2]
push str._s_r_n
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
xor ebx, ebx
movzx eax, byte [ebx + ebp + 0x43]
cmp eax, 0xff
jne 0x404f46
mov edx, dword [0x52bfe4]
mov eax, dword [ebx*4 + 0x52bf14]
push edx
push eax
push str.___s:__s_r_n
lea ecx, [edi + esi*2]
push ecx
jmp 0x404f58
mov edx, dword [ebx*4 + 0x52bf14]
push eax
push edx
push str.____s:__u_r_n
lea eax, [edi + esi*2]
push eax
call fcn.004499de
inc ebx
add esp, 0x10
add esi, eax
cmp ebx, 3
jb 0x404f20
mov al, byte [ebp + 0x47]
mov edx, dword [0x52bf20]
cmp al, 0xff
jne 0x404f84
mov ecx, dword [0x52bfe4]
push ecx
push edx
push str.___s:__s_r_n
jmp 0x404f8e
movzx ecx, al
push ecx
push edx
push str.____s:__u_r_n
lea eax, [edi + esi*2]
push eax
call fcn.004499de
mov edx, dword [0x52bf24]
add esi, eax
mov al, byte [ebp + 0x48]
add esp, 0x10
cmp al, 0xff
jne 0x404fb8
mov ecx, dword [0x52bfe4]
push ecx
push edx
push str.___s:__s_r_n
jmp 0x404fc2
movzx ecx, al
push ecx
push edx
push str.____s:__u_r_n
lea eax, [edi + esi*2]
push eax
call fcn.004499de
mov edx, dword [0x52bf28]
add esi, eax
mov al, byte [ebp + 0x46]
add esp, 0x10
cmp al, 0xff
jne 0x404fec
mov ecx, dword [0x52bfe4]
push ecx
push edx
push str.___s:__s_r_n
jmp 0x404ff6
movzx ecx, al
push ecx
push edx
push str.____s:__u_r_n
lea eax, [edi + esi*2]
push eax
call fcn.004499de
mov ecx, dword [0x52bce4]
add esp, 0x10
push ecx
add esi, eax
lea edx, [edi + esi*2]
push str._s_r_n
push edx
call fcn.004499de
add esp, 0xc
add esi, eax
xor ebx, ebx
movzx eax, byte [ebx + ebp + 0x3d]
push eax
mov eax, dword [ebx*4 + 0x52bce8]
push eax
lea ecx, [edi + esi*2]
push str.____s:__hu_r_n
push ecx
call fcn.004499de
inc ebx
add esp, 0x10
add esi, eax
cmp ebx, 6
jb 0x405020
push 2
lea edx, [edi + esi*2]
push 0x49655c
push edx
call fcn.00449a7d
lea eax, [ebp + 0x12]
add esp, 0xc
add esi, 2
xor ebx, ebx
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx]
test eax, eax
jne 0x405078
mov eax, dword [0x52bfac]
jmp 0x40509b
cmp eax, 0x22f
jbe 0x405086
mov eax, dword [0x52bfb4]
jmp 0x40509b
mov edx, dword [0x52bbd0]
imul edx, edx, 0x22f
add edx, eax
mov eax, dword [edx*4 + 0x4d36dc]
push eax
mov eax, dword [0x52be6c]
inc ebx
push ebx
push eax
lea ecx, [edi + esi*2]
push str._s__u:__s_r_n
push ecx
call fcn.004499de
add dword [esp + 0x28], 2
add esp, 0x14
add esi, eax
cmp ebx, 4
jb 0x405066
mov edx, dword [0x52bd18]
push edx
lea eax, [edi + esi*2]
push str._r_n_s:
push eax
call fcn.004499de
add esp, 0xc
add esi, eax
push 0
lea ebx, [edi + esi*2]
push 0
push 8
lea edx, [ebp + 0x4a]
mov eax, ebx
call fcn.00412610
mov eax, ebx
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4050f6
sub eax, edx
sar eax, 1
add esi, eax
movzx eax, byte [ebp + 0x5a]
test eax, eax
jne 0x405116
mov eax, dword [0x52bf4c]
jmp 0x405131
cmp eax, 1
jne 0x405122
mov eax, dword [0x52bf50]
jmp 0x405131
cmp eax, 3
mov eax, dword [0x52be64]
je 0x405131
mov eax, dword [0x52bfb4]
mov ecx, dword [0x52bfb0]
push eax
push ecx
lea edx, [edi + esi*2]
push str._r_n____s:__s_r_n
push edx
call fcn.004499de
movzx ecx, word [ebp]
mov edx, dword [0x52bd14]
add esi, eax
movzx eax, word [ebp + 2]
push eax
push ecx
push edx
lea eax, [edi + esi*2]
push str.____s:__hu__hu_r_n
push eax
call fcn.004499de
mov ecx, dword [0x52bd44]
add esp, 0x24
push ecx
add esi, eax
lea edx, [edi + esi*2]
push str._s_r_n
push edx
call fcn.004499de
mov ecx, dword [0x52c170]
mov edx, dword [0x52c174]
add esi, eax
mov eax, dword [0x52c16c]
mov dword [esp + 0x40], eax
mov eax, dword [0x52c178]
mov dword [esp + 0x4c], eax
mov eax, dword [0x52c248]
mov dword [esp + 0x44], ecx
mov ecx, dword [0x52c234]
mov dword [esp + 0x48], edx
mov edx, dword [0x52c238]
mov dword [esp + 0x58], eax
mov eax, dword [0x52c258]
mov dword [esp + 0x50], ecx
mov ecx, dword [0x52c250]
mov dword [esp + 0x54], edx
mov edx, dword [0x52c254]
mov dword [esp + 0x64], eax
mov eax, dword [0x52c240]
mov dword [esp + 0x5c], ecx
mov ecx, dword [0x52c25c]
mov dword [esp + 0x60], edx
mov edx, dword [0x52c23c]
mov dword [esp + 0x70], eax
movzx eax, word [ebp + 0xc]
mov dword [esp + 0x68], ecx
mov ecx, dword [0x52c244]
mov dword [esp + 0x6c], edx
mov edx, dword [0x52c24c]
add esp, 0xc
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x14], eax
xor ebx, ebx
mov ebp, 1
test dword [esp + 0x14], ebp
je 0x405245
mov edx, dword [esp + ebx*4 + 0x34]
push edx
lea eax, [edi + esi*2]
push str.___s_r_n
push eax
call fcn.004499de
add esp, 0xc
add esi, eax
inc ebx
rol ebp, 1
cmp ebx, 0xf
jb 0x405227
xor ecx, ecx
mov word [edi + esi*2 - 4], cx
jmp 0x405326
cmp ebx, 2
jne 0x4052dc
movzx ecx, word [ebp]
test ecx, ecx
jne 0x405272
mov ebx, dword [0x52bfac]
jmp 0x4052a7
mov ebx, dword [0x52bfe0]
mov edx, dword [0x4b9ddc]
xor eax, eax
movzx ebp, word [edx + eax*2]
cmp ebp, ecx
je 0x405292
inc eax
cmp eax, 0x26a
jb 0x405280
jmp 0x4052a7
mov edx, dword [0x52bbd0]
imul edx, edx, 0x26a
add edx, eax
mov ebx, dword [edx*4 + 0x4cf7a8]
push ebx
lea eax, [edi + esi*2]
push str.___s_
push eax
call fcn.004499de
lea eax, [esp + 0x7c]
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4052c0
sub eax, edx
push ebx
sar eax, 1
push str.___s_
lea ecx, [esp + eax*2 + 0x78]
push ecx
jmp 0x40531e
test ebx, ebx
je 0x405326
movzx edx, word [ebp]
push edx
lea eax, [edi + esi*2]
push str.___hu_
push eax
call fcn.004499de
lea eax, [esp + 0x7c]
add esp, 0xc
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405300
movzx ecx, word [ebp]
sub eax, edx
push ecx
sar eax, 1
push str.___hu_
lea edx, [esp + eax*2 + 0x78]
push edx
call fcn.004499de
add esp, 0xc
mov eax, dword [0x4de56c]
push 0
push 0xf
push eax
call dword [0x457380]
push eax
call dword [0x45734c]
test esi, esi
jne 0x405346
xor ecx, ecx
mov word [edi], cx
cmp dword [esp + 0x174], 0
push edi
je 0x405a26
mov edx, dword [0x4de56c]
push 0x15
push edx
call dword [0x457380]
push eax
call dword [0x4572b8]
push edi
call fcn.00449773
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x160
ret
test eax, eax
je 0x4059eb
movzx ecx, word [ebp]
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x4053f6
cmp eax, 1
jne 0x4053b3
mov ecx, dword [0x52be70]
push ecx
push str._s_r_n________________r_n
push edi
call fcn.004499de
add esp, 0xc
mov esi, eax
cmp dword [esp + 0x174], 0
jne 0x4053f6
mov eax, dword [esp + 0x1c]
cmp eax, 3
jae 0x4053f6
cmp byte [eax + 0x4b9df0], 0
je 0x4053f6
mov edx, dword [0x52bfcc]
mov eax, dword [0x52beb8]
mov ecx, dword [0x52bfc8]
push edx
push eax
push ecx
lea edx, [edi + esi*2]
push str._s_s_s_r_n
push edx
call fcn.004499de
add esp, 0x14
add esi, eax
cmp dword [esp + 0x20], 0xe
jbe 0x405405
mov ebx, dword [0x52bfb4]
jmp 0x405410
movzx eax, word [ebp]
mov ebx, dword [eax*4 + 0x4de9c8]
mov ecx, dword [esp + 0x1c]
push ebx
inc ecx
push ecx
lea edx, [esp + 0x78]
push str._u____s
push edx
call fcn.004499de
add esp, 0x10
cmp dword [esp + 0x20], 0
je 0x40544a
mov eax, dword [0x52be4c]
push ebx
push eax
lea ecx, [edi + esi*2]
push str._s:__s
push ecx
call fcn.004499de
add esp, 0x10
add esi, eax
mov eax, dword [esp + 0x20]
mov ebx, dword [ebp + 4]
cmp eax, 1
je 0x40553b
cmp eax, 2
je 0x40553b
cmp eax, 3
jne 0x4054f4
mov edx, dword [0x52bfe0]
mov ecx, dword [0x4b9dd4]
mov dword [esp + 0x10], edx
xor eax, eax
mov edi, edi
movzx edx, word [ecx + eax*2]
cmp edx, ebx
je 0x405492
inc eax
cmp eax, 0x201
jb 0x405480
jmp 0x4054ab
mov ecx, dword [0x52bbd0]
imul ecx, ecx, 0x201
add ecx, eax
mov edx, dword [ecx*4 + 0x4c8ec0]
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x10]
push ebx
lea eax, [edi + esi*2]
push str.___s_
push eax
call fcn.004499de
add esp, 0xc
add esi, eax
lea eax, [esp + 0x70]
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4054d0
sub eax, edx
sar eax, 1
push ebx
lea ecx, [esp + eax*2 + 0x74]
push str.___s_
push ecx
call fcn.004499de
jmp 0x4055f7
test eax, eax
je 0x4055fe
push ebx
lea edx, [edi + esi*2]
push str.___u_
push edx
call fcn.004499de
add esp, 0xc
add esi, eax
lea eax, [esp + 0x70]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405517
sub eax, edx
sar eax, 1
push ebx
lea eax, [esp + eax*2 + 0x74]
push str.___u_
push eax
call fcn.004499de
jmp 0x4055f7
mov eax, dword [0x52bb64]
test eax, eax
jne 0x405556
push 0x1a8
call fcn.00449b23
add esp, 4
mov dword [0x52bb64], eax
push 1
push eax
lea ecx, [ebp + 8]
mov eax, 0xec
call fcn.0040d3d0
mov eax, dword [0x52be74]
add esp, 8
test ebx, ebx
jne 0x405577
mov eax, dword [0x52be78]
mov ecx, dword [0x52bb64]
movsx edx, word [ecx + 0xe]
push eax
mov eax, dword [0x52bbd0]
imul eax, eax, 0x28a
add edx, eax
mov ecx, dword [edx*4 + 0x4b9e2c]
push ecx
lea edx, [edi + esi*2]
push str.___s____s_
push edx
call fcn.004499de
add esp, 0x10
add esi, eax
lea eax, [esp + 0x70]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4055b1
mov ecx, dword [0x52bb64]
sub eax, edx
movsx edx, word [ecx + 0xe]
mov ecx, dword [0x52bbd0]
imul ecx, ecx, 0x28a
add edx, ecx
mov edx, dword [edx*4 + 0x4b9e2c]
push edx
sar eax, 1
lea eax, [esp + eax*2 + 0x74]
push str.___s_
push eax
call fcn.004499de
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x2c]
add esp, 0xc
cmp dword [esp + 0x18], 2
jne 0x4059a3
test eax, eax
je 0x4059a3
mov ecx, dword [0x52be40]
push ecx
lea edx, [edi + esi*2]
push str._r_n_s:
push edx
call fcn.004499de
add esp, 0xc
add esi, eax
lea eax, [edi + esi*2]
push 0
push 1
lea ecx, [ebp + 0x104]
mov ebx, 0x24
mov dword [esp + 0x20], eax
call fcn.0040fa70
mov eax, dword [esp + 0x20]
add esp, 8
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405650
sub eax, edx
sar eax, 1
add esi, eax
mov eax, dword [0x52be7c]
push eax
lea ecx, [edi + esi*2]
push str._r_n_s:_r_n
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
lea eax, [edi + esi*2]
push 1
push 1
lea ecx, [ebp + 0x154]
mov ebx, 0xfa
mov dword [esp + 0x20], eax
call fcn.0040fa70
mov eax, dword [esp + 0x20]
add esp, 8
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x4056a0
movzx edx, word [ebp + 0x150]
sub eax, ecx
sar eax, 1
add esi, eax
mov eax, dword [0x52be58]
push edx
push eax
lea ecx, [edi + esi*2]
push str._r_n_r_n_s:__hu_r_n
push ecx
call fcn.004499de
movzx ebx, word [ebp + 0x354]
mov ecx, ebx
add esi, eax
call fcn.00404460
mov ecx, eax
xor eax, eax
mov dword [esp + 0x36], eax
mov dword [esp + 0x3a], eax
mov dword [esp + 0x3e], eax
mov word [esp + 0x42], ax
mov eax, 0xb38cf9b1
imul ebx
add edx, ebx
sar edx, 8
mov eax, edx
shr eax, 0x1f
lea edx, [edx + eax + 0x7d0]
mov eax, ecx
sar ecx, 4
inc ecx
mov word [esp + 0x3a], cx
mov ecx, dword [0x52bcb0]
push ecx
mov word [esp + 0x38], dx
and eax, 0xf
lea edx, [edi + esi*2]
inc eax
push str._s:
push edx
mov word [esp + 0x42], ax
call fcn.004499de
add esp, 0x1c
push 0x64
add esi, eax
lea eax, [edi + esi*2]
push eax
push 0
lea ecx, [esp + 0x30]
push ecx
push 1
push 0x400
call dword [0x4571e0]
mov edx, dword [0x52be80]
push edx
lea esi, [esi + eax - 1]
lea eax, [edi + esi*2]
push str._r_n_s:
push eax
call fcn.004499de
add esi, eax
movzx eax, word [ebp + 0x34a]
add esp, 0xc
cmp eax, 0x289
jbe 0x40578f
push eax
push str._hu_
lea ecx, [edi + esi*2]
push ecx
jmp 0x4057b9
test eax, eax
jne 0x40579a
mov eax, dword [0x52bfac]
jmp 0x4057af
mov edx, dword [0x52bbd0]
imul edx, edx, 0x28a
add edx, eax
mov eax, dword [edx*4 + 0x4b9e2c]
push eax
push str._s_
lea eax, [edi + esi*2]
push eax
call fcn.004499de
add esi, eax
movzx eax, word [ebp + 0x34c]
add esp, 0xc
cmp eax, 0x289
jbe 0x4057dd
push eax
push str._hu_
lea ecx, [edi + esi*2]
push ecx
jmp 0x405807
test eax, eax
jne 0x4057e8
mov eax, dword [0x52bfac]
jmp 0x4057fd
mov edx, dword [0x52bbd0]
imul edx, edx, 0x28a
add edx, eax
mov eax, dword [edx*4 + 0x4b9e2c]
push eax
push str._s_
lea eax, [edi + esi*2]
push eax
call fcn.004499de
add esi, eax
movzx eax, word [ebp + 0x34e]
add esp, 0xc
cmp eax, 0x289
jbe 0x40582b
push eax
push str._hu_r_n
lea ecx, [edi + esi*2]
push ecx
jmp 0x405855
test eax, eax
jne 0x405836
mov eax, dword [0x52bfac]
jmp 0x40584b
mov edx, dword [0x52bbd0]
imul edx, edx, 0x28a
add edx, eax
mov eax, dword [edx*4 + 0x4b9e2c]
push eax
push str._s_r_n
lea eax, [edi + esi*2]
push eax
call fcn.004499de
add esi, eax
movzx eax, word [ebp + 0x348]
add esp, 0xc
cmp eax, 0xff
jne 0x405886
mov ecx, dword [0x52bfe8]
mov edx, dword [0x52be84]
push ecx
push edx
push str._s:__s_r_n
lea eax, [edi + esi*2]
push eax
jmp 0x405897
mov ecx, dword [0x52be84]
push eax
push ecx
push str._s:__hu_r_n
lea edx, [edi + esi*2]
push edx
call fcn.004499de
movzx ebx, word [ebp + 0x14c]
add esi, eax
mov eax, dword [0x52be88]
add esp, 0x10
push eax
lea ecx, [edi + esi*2]
push str._s:
push ecx
and ebx, 0x1d80
call fcn.004499de
add esp, 0xc
add esi, eax
test ebx, 0x400
je 0x4058f2
mov eax, dword [0x52bbd0]
lea edx, [eax + eax*8]
mov eax, dword [edx*4 + 0x4b9ba0]
push eax
lea ecx, [edi + esi*2]
push str._s_
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
test ebx, 0x800
je 0x40591d
mov eax, dword [0x52bbd0]
lea edx, [eax + eax*8]
mov eax, dword [edx*4 + 0x4b9ba4]
push eax
lea ecx, [edi + esi*2]
push str._s_
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
test ebx, 0x1000
je 0x405948
mov eax, dword [0x52bbd0]
lea edx, [eax + eax*8]
mov eax, dword [edx*4 + 0x4b9ba8]
push eax
lea ecx, [edi + esi*2]
push str._s_
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
test bl, bl
jns 0x40596f
mov eax, dword [0x52bbd0]
lea edx, [eax + eax*8]
mov eax, dword [edx*4 + 0x4b9bac]
push eax
lea ecx, [edi + esi*2]
push str._s_
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
test ebx, 0x100
je 0x40599a
mov eax, dword [0x52bbd0]
lea edx, [eax + eax*8]
mov eax, dword [edx*4 + 0x4b9bb0]
push eax
lea ecx, [edi + esi*2]
push str._s_
push ecx
call fcn.004499de
add esp, 0xc
add esi, eax
sub esi, 2
xor edx, edx
mov word [edi + esi*2], dx
cmp dword [esp + 0x14], 0
jne 0x4059c6
mov eax, dword [0x52bb64]
test eax, eax
je 0x4059c6
push eax
call fcn.00449ac9
add esp, 4
mov dword [0x52bb64], 0
cmp dword [esp + 0x174], 0
je 0x4059d8
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4de56c]
push eax
push 0xf
push ecx
jmp 0x405330
mov ecx, dword [esp + 0x1c]
xor edx, edx
mov word [edi], dx
mov eax, dword [0x52bfac]
push eax
inc ecx
push ecx
lea edx, [esp + 0x78]
push str._u____s
push edx
call fcn.004499de
mov eax, dword [0x4de56c]
add esp, 0x10
push 0
push 0xf
push eax
call ebx
push eax
call dword [0x45734c]
jmp 0x405341
mov eax, dword [0x4de56c]
mov esi, dword [0x457380]
push 0x10
push eax
call esi
push eax
call dword [0x4572b8]
mov ebp, dword [esp + 0x1c]
mov edx, dword [0x4de56c]
lea ecx, [esp + 0x70]
push ecx
push ebp
push 0x14a
push 0xd
push edx
call esi
mov ebx, dword [0x4572c4]
push eax
call ebx
mov eax, dword [0x4de56c]
push 0
push ebp
push 0x14e
push 0xd
push eax
call esi
push eax
call ebx
push edi
call fcn.00449773
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x160
ret