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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
push ebx
push esi
mov esi, edx
push edi
mov edi, ecx
mov dword [esp + 0x3c], esi
xor ecx, ecx
mov dword [esp + 0x4c], edi
test byte [esi + 0x24], 0x80
movsx eax, word [esi + 0x2a]
mov edx, dword [edi]
mov ebx, dword [edi + 8]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x50], ecx
mov byte [esp + 0x17], cl
mov dword [esp + 0x84], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0xc], eax
jne 0x18123b11
mov dword [esp + 0x28], ecx
mov dword [esp + 0x5c], 1
jmp 0x18123b26
mov ecx, esi
call fcn.1811903a
mov dword [esp + 0x28], eax
xor ecx, ecx
movzx eax, word [eax + 0x32]
mov dword [esp + 0x5c], eax
test dword [esi + 0x24], 0x800
je 0x18123d57
mov eax, ecx
mov dword [esp + 0x30], ecx
xor edx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edx
and dword [esp + 0x2c], 0
cmp dword [esp + 0xc], 0
jle 0x18123d10
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xc]
mov edx, dword [esi + 4]
add edx, dword [esp + 0x1c]
mov dword [esp + 0x44], edx
movzx esi, byte [edx + 0xc]
mov dword [esp + 0x18], esi
test esi, esi
je 0x18123cee
mov ecx, dword [esp + 0x3c]
movsx eax, word [ecx + 0x28]
cmp dword [esp + 0x2c], eax
je 0x18123ce6
movzx eax, word [edx + 0x10]
and eax, 0x60
mov dword [esp + 0x24], eax
je 0x18123ba8
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x18123ba8
inc dword [esp + 0x20]
jmp 0x18123cea
cmp dword [ebp + 0x2c], 0
mov eax, dword [esp + 0x2c]
je 0x18123bca
mov edi, dword [ebp + 0x2c]
cmp dword [edi + eax*4], 0
mov edi, dword [esp + 0x4c]
jge 0x18123bca
cmp dword [esp + 0x24], 0
je 0x18123ce6
cmp byte [ebp + 0x20], 0xb
je 0x18123bf7
movzx esi, byte [ebp + 0x20]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x18], esi
cmp esi, 5
jne 0x18123c03
cmp dword [esp + 0x10], 0
jne 0x18123bee
cmp dword [edx + 4], 0
jne 0x18123c15
push 2
pop esi
mov dword [esp + 0x18], esi
jmp 0x18123c15
cmp esi, 0xb
jne 0x18123bdc
push 2
pop esi
mov dword [esp + 0x18], esi
cmp dword [esp + 0x10], 0
je 0x18123c15
cmp dword [esp + 0x24], 0
je 0x18123ce6
mov edx, eax
call fcn.18119072
mov ecx, dword [ebp + 0x14]
cwde
inc ecx
add ecx, eax
mov eax, esi
mov dword [esp + 0x24], ecx
sub eax, 1
je 0x18123c9a
sub eax, 1
je 0x18123c93
sub eax, 1
je 0x18123c9a
dec eax
sub eax, 1
je 0x18123c57
xor eax, eax
push eax
push dword [ebp + 0x24]
push ecx
push 0x32
pop edx
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
jmp 0x18123ce6
xor eax, eax
push eax
push eax
push ecx
push 0x33
pop edx
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
mov esi, eax
mov eax, dword [esp + 0x44]
mov ecx, edi
inc dword [esp + 0x30]
push dword [esp + 0x24]
mov edx, dword [eax + 4]
call fcn.1811332c
pop ecx
mov edx, esi
mov ecx, ebx
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
jmp 0x18123ce6
mov ecx, edi
call fcn.1811d25e
mov eax, dword [esp + 0x44]
push dword [eax]
mov eax, dword [esp + 0x40]
push dword [eax]
push str._s._s
push dword [esp + 0x54]
call fcn.180e83c0
push dword [esp + 0x34]
mov ecx, ebx
mov esi, eax
push dword [esp + 0x2c]
push 0x513
push 0x43
pop edx
call fcn.180ff616
add esp, 0x1c
mov edx, esi
mov ecx, ebx
push 0xfffffffffffffff9
call fcn.180ffdea
pop ecx
xor edx, edx
mov ecx, ebx
inc edx
call fcn.180ffb71
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x2c]
add dword [esp + 0x1c], 0x14
inc edx
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x2c], edx
cmp edx, ecx
jl 0x18123b5d
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x18123d18
test ecx, ecx
je 0x18123d53
test eax, eax
jne 0x18123d53
inc eax
mov dword [esp + 0x10], eax
test ecx, ecx
jle 0x18123b43
test byte [esi + 0x24], 0x60
je 0x18123b43
mov edx, dword [ebp + 0x14]
mov ecx, edi
push esi
lea edx, [edx + 1]
call fcn.181227c0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
pop ecx
mov ecx, dword [esp + 0x30]
jmp 0x18123b43
mov edx, dword [esp + 0x48]
mov ecx, dword [esi + 0x18]
mov dword [esp + 0x38], ecx
test ecx, ecx
je 0x18123ea1
mov eax, dword [edx + 0x20]
xor edx, edx
and eax, 0x200
or eax, edx
jne 0x18123ea1
mov eax, dword [ebp + 0x14]
not eax
mov dword [edi + 0x34], eax
mov al, byte [ebp + 0x20]
cmp al, 0xb
je 0x18123d8c
movzx eax, al
jmp 0x18123d8f
push 2
pop eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
cmp dword [ecx], edx
jle 0x18123e9a
lea eax, [ecx + 8]
mov dword [esp + 0x18], eax
mov edx, dword [ebp + 0x2c]
mov ecx, dword [eax - 4]
mov dword [esp + 0x68], ecx
test edx, edx
je 0x18123dc7
movzx eax, byte [ebp + 0x1c]
push eax
call fcn.18123a4d
pop ecx
test eax, eax
je 0x18123e7a
cmp byte [esp + 0x17], 0
jne 0x18123de2
mov eax, dword [ebp + 0x14]
mov edx, esi
inc eax
mov ecx, ebx
push eax
call fcn.18122659
pop ecx
mov byte [esp + 0x17], 1
dec dword [edi + 0x38]
xor eax, eax
mov edx, dword [esp + 0x68]
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x30], ecx
test edx, edx
je 0x18123e07
mov ecx, dword [esp + 0x48]
push eax
push eax
call fcn.1810fdce
pop ecx
pop ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x24], eax
cmp byte [edx + 0x51], 0
jne 0x18123e22
push 0x10
push ecx
push eax
push edi
call fcn.18113606
add esp, 0x10
mov edx, dword [esp + 0x24]
test edx, edx
je 0x18123e33
mov ecx, dword [esp + 0x48]
call fcn.1810fc83
mov eax, dword [esp + 0x1c]
cmp eax, 4
jne 0x18123e48
mov edx, dword [ebp + 0x24]
mov ecx, ebx
call fcn.180ff66f
jmp 0x18123e6f
mov ecx, dword [esp + 0x18]
cmp eax, 5
jne 0x18123e58
push 2
pop eax
mov dword [esp + 0x1c], eax
push 3
xor edx, edx
push edx
push dword [ecx]
mov edx, 0x113
mov ecx, edi
push eax
call fcn.1811d26c
add esp, 0x10
mov edx, dword [esp + 0x30]
mov ecx, ebx
call fcn.180ff99a
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
inc edx
mov eax, dword [esp + 0x18]
add eax, 0x14
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], eax
cmp edx, dword [ecx]
jl 0x18123da6
xor ecx, ecx
mov dword [edi + 0x34], ecx
jmp 0x18123ea3
xor ecx, ecx
mov edx, dword [ebp + 0x30]
test edx, edx
je 0x18123ed8
cmp dword [edx], ecx
jne 0x18123eb9
xor edx, edx
mov byte [ebp + 0x20], 4
mov dword [ebp + 0x30], edx
jmp 0x18123eda
mov eax, dword [edx + 0x10]
mov dword [esp + 0x50], eax
test eax, eax
je 0x18123ed8
push ecx
push ecx
push ecx
push 0xb
pop edx
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
mov dword [esp + 0x58], eax
xor edx, edx
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x74], eax
mov eax, ecx
and eax, 0x6000
or eax, edx
jne 0x18123efd
mov dword [esp + 0x44], edx
mov dword [esp + 0x2c], edx
jmp 0x18123f71
and ecx, 0x2000
or ecx, edx
push edx
mov ecx, edi
push edx
je 0x18123f36
push 0x7e
mov edx, esi
call fcn.18131b85
add esp, 0xc
mov dword [esp + 0x44], eax
test eax, eax
jne 0x18123f4b
push eax
push eax
mov edx, esi
mov ecx, edi
call fcn.18121dd3
pop ecx
pop ecx
test eax, eax
jne 0x18123f4b
mov dword [esp + 0x2c], eax
jmp 0x18123f71
mov dword [esp + 0x4c], edx
mov edx, esi
call fcn.18121dd3
mov dword [esp + 0x34], eax
pop ecx
pop ecx
test eax, eax
je 0x18123f71
inc dword [edi + 0x2c]
xor ecx, ecx
mov eax, dword [edi + 0x2c]
push ecx
push eax
push ecx
push 0x45
pop edx
mov ecx, ebx
mov dword [esp + 0x38], eax
call fcn.180ff616
add esp, 0xc
dec dword [edi + 0x38]
mov eax, dword [edi + 0x38]
mov dword [esp + 0x54], eax
cmp byte [ebp + 0x1c], 0
je 0x1812414a
cmp dword [esp + 0x28], 0
jne 0x1812414a
dec dword [edi + 0x38]
mov dl, byte [ebp + 0x20]
movzx eax, byte [esi + 0x32]
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
cmp dl, 0xb
je 0x18123fa5
movzx eax, dl
jmp 0x18123fad
cmp eax, 0xb
jne 0x18123fb1
push 2
pop eax
mov dword [esp + 0x18], eax
mov edx, dword [ebp + 0x30]
test edx, edx
je 0x18123fd3
cmp dword [edx + 0x10], 0
jne 0x18123fd3
xor eax, eax
cmp dword [edx + 8], eax
setne al
lea eax, [eax*2 + 4]
mov dword [esp + 0x18], eax
jmp 0x18123ffd
cmp eax, 5
jne 0x18123ffd
cmp byte [ebp + 0x20], al
je 0x18123ffd
xor eax, eax
cmp dword [esi + 8], eax
je 0x18123ffd
push eax
push eax
push eax
push 0xb
pop edx
mov ecx, ebx
call fcn.180ff616
mov ecx, dword [esp + 0x28]
add esp, 0xc
inc eax
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x18124022
push eax
push ecx
push dword [ebp + 0x14]
mov ecx, ebx
push 0x35
pop edx
call fcn.180ff616
add esp, 0xc
mov edx, 0x90
mov ecx, ebx
call fcn.180ffb71
push dword [ebp + 0x14]
mov ecx, ebx
push dword [esp + 0x20]
push dword [ebp + 0xc]
push 0x20
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x24]
add esp, 0xc
test edx, edx
je 0x181240ff
cmp edx, 3
jbe 0x18124102
cmp edx, 4
je 0x18124075
cmp edx, 5
je 0x18124084
cmp edx, 6
jne 0x181240ff
push dword [ebp + 0xc]
mov edx, dword [ebp + 0x30]
xor eax, eax
push eax
push esi
mov ecx, edi
call fcn.181342f1
add esp, 0xc
mov edx, dword [ebp + 0x24]
mov ecx, ebx
call fcn.180ff66f
jmp 0x1812410b
cmp dword [esp + 0x2c], 0
je 0x181240d4
mov ecx, edi
call fcn.1811d250
push 0xffffffffffffffff
push 1
push 5
xor eax, eax
mov edx, esi
push eax
push 1
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [esp + 0x64]
call fcn.1811e8f3
add esp, 0x24
xor eax, eax
mov ecx, ebx
push eax
push 1
push dword [esp + 0x34]
push 0x52
pop edx
call fcn.180ff616
add esp, 0xc
mov dword [esp + 0x64], 1
jmp 0x181240f5
xor edx, edx
cmp dword [esi + 8], edx
je 0x181240f5
mov ecx, edi
call fcn.1811d250
push 0xffffffffffffffff
push edx
push dword [ebp + 0x10]
mov edx, esi
push dword [ebp + 0xc]
call fcn.1811eb8a
add esp, 0x10
mov dword [esp + 0x6c], 1
jmp 0x1812410b
push 2
pop edx
push esi
mov ecx, edi
call fcn.1811d3cf
pop ecx
mov edx, dword [esp + 0x1c]
mov ecx, ebx
call fcn.180ff99a
cmp dword [esp + 0x60], 0
je 0x1812414a
xor eax, eax
mov ecx, ebx
push eax
push eax
push eax
push 0xb
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov ecx, ebx
mov dword [esp + 0x88], eax
lea edx, [edx - 1]
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x54]
xor eax, eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], ecx
test eax, eax
je 0x181248d3
mov edx, dword [ebp + 8]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
cmp dword [edx + ecx*4], 0
je 0x181248bf
mov edx, dword [esp + 0x50]
cmp edx, eax
jne 0x181241c1
mov eax, dword [esp + 0x58]
mov ecx, ebx
inc eax
mov dword [esp + 0x40], eax
xor eax, eax
push eax
push eax
push eax
push 0xb
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x64]
add esp, 0xc
mov ecx, ebx
mov dword [esp + 0x84], eax
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov edx, dword [esp + 0x50]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0xc]
jmp 0x181241cb
dec dword [edi + 0x38]
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x40], ecx
cmp byte [esp + 0x17], 0
jne 0x181241ee
test edx, edx
je 0x181241da
cmp edx, eax
jne 0x181241ee
mov eax, dword [ebp + 0x14]
mov edx, esi
inc eax
mov ecx, ebx
push eax
call fcn.18122659
pop ecx
mov byte [esp + 0x17], 1
mov ecx, dword [esp + 0xc]
xor eax, eax
mov edx, dword [esp + 0x10]
cmp dword [ecx + 0x24], eax
je 0x1812423d
push eax
mov eax, dword [ebp + 8]
mov ecx, ebx
push dword [eax + edx*4]
xor eax, eax
push eax
push 0x48
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x18]
add esp, 8
mov eax, dword [ebp + 0x14]
not eax
mov dword [edi + 0x34], eax
mov edx, dword [ecx + 0x24]
mov ecx, edi
push dword [esp + 0x44]
call fcn.18113bf7
mov edx, dword [esp + 0x18]
xor eax, eax
pop ecx
pop ecx
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x34], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x68], eax
inc eax
mov esi, dword [esp + 0x68]
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x38], esi
xor esi, esi
mov dword [esp + 0x20], eax
movzx eax, word [ecx + 0x34]
cmp si, ax
mov edx, eax
mov esi, dword [esp + 0x3c]
jae 0x18124339
mov edx, dword [esp + 0x30]
xor eax, eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x20]
mov eax, dword [ecx + 4]
movzx eax, word [eax + esi*2]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
cwde
cmp eax, 0xfffffffe
jne 0x181242b9
mov eax, dword [ebp + 0x14]
not eax
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x1c]
push edx
mov edx, dword [ecx + 0x28]
mov ecx, edi
mov edx, dword [edx + eax + 4]
call fcn.1811332c
xor eax, eax
pop ecx
mov dword [edi + 0x34], eax
jmp 0x181242fb
cmp eax, 0xffffffff
je 0x181242e7
mov edi, dword [esp + 0x24]
cmp di, word [esi + 0x28]
mov edi, dword [esp + 0x4c]
je 0x181242e7
xor eax, eax
mov ecx, esi
push eax
push edx
mov edx, dword [esp + 0x2c]
call fcn.18119072
mov ecx, dword [ebp + 0x14]
cwde
inc ecx
add eax, ecx
push eax
push 0x4e
jmp 0x181242f0
xor eax, eax
push eax
push edx
push dword [ebp + 0x14]
push 0x4f
pop edx
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x34]
inc dword [esp + 0x20]
add dword [esp + 0x1c], 0x14
inc edx
movzx eax, word [ecx + 0x34]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x34], edx
cmp dword [esp + 0x20], eax
jl 0x1812427d
mov eax, dword [esp + 0x38]
mov ecx, dword [ebp + 8]
movzx edx, ax
mov eax, dword [esp + 0x10]
mov eax, dword [ecx + eax*4]
jmp 0x1812433d
mov eax, dword [esp + 0x38]
push eax
movzx eax, dx
mov ecx, ebx
push eax
push dword [esp + 0x38]
push 0x5b
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x18]
add esp, 0xc
cmp dword [ebp + 0x18], 0
je 0x18124379
cmp dword [esp + 0x28], ecx
jne 0x18124379
cmp byte [ebp + 0x1c], 0
jne 0x18124379
mov edx, dword [esp + 0x40]
mov ecx, ebx
call fcn.180ff99a
jmp 0x181248b4
movzx eax, byte [ecx + 0x36]
mov dword [esp + 0x34], eax
test eax, eax
je 0x18124369
mov dl, byte [ebp + 0x20]
cmp dl, 0xb
je 0x18124392
movzx eax, dl
jmp 0x1812439a
cmp eax, 0xb
jne 0x1812439e
push 2
pop eax
mov dword [esp + 0x34], eax
cmp dword [esp + 0x50], ecx
jne 0x181243ba
mov edx, dword [ebp + 0x30]
xor eax, eax
cmp dword [edx + 8], eax
setne al
lea eax, [eax*2 + 4]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x10], 0
jne 0x18124425
xor edx, edx
cmp dword [ecx + 0x14], edx
jne 0x18124425
cmp dword [esp + 0x28], ecx
jne 0x18124425
cmp eax, 5
jne 0x18124425
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x20]
and eax, 0x2000
mov dword [esp + 0x70], eax
je 0x181243fb
push edx
push edx
push 0x7e
mov edx, esi
mov ecx, edi
call fcn.18131b85
add esp, 0xc
test eax, eax
jne 0x18124425
xor edx, edx
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x20]
and eax, 0x4000
mov dword [esp + 0x70], eax
je 0x18124369
cmp dword [esi + 0x10], edx
jne 0x18124425
mov ecx, esi
call fcn.1812169b
test eax, eax
je 0x18124369
mov ecx, dword [esp + 0xc]
movzx eax, word [ecx + 0x32]
mov ecx, ebx
push eax
push dword [esp + 0x34]
mov eax, dword [esp + 0x18]
push dword [esp + 0x48]
add eax, dword [ebp + 0x10]
push eax
push 0x1c
pop edx
call fcn.180ff900
mov ecx, dword [esp + 0x1c]
add esp, 0x10
mov dword [esp + 0x1c], eax
cmp ecx, dword [esp + 0x28]
jne 0x1812445f
mov edx, dword [esp + 0x30]
jmp 0x18124470
mov edx, dword [esp + 0x5c]
mov ecx, edi
call fcn.1811484d
mov ecx, dword [esp + 0xc]
mov edx, eax
cmp dword [ebp + 0x18], 0
mov dword [esp + 0x20], edx
jne 0x18124483
mov eax, dword [esp + 0x34]
cmp eax, 5
jne 0x181244da
test byte [esi + 0x24], 0x80
jne 0x18124526
xor eax, eax
mov ecx, ebx
push eax
mov eax, dword [esp + 0x14]
add eax, dword [ebp + 0x10]
push edx
push eax
mov edx, 0x87
call fcn.180ff616
mov edx, dword [ebp + 0x18]
add esp, 0xc
test edx, edx
je 0x1812467c
mov eax, dword [esp + 0x20]
mov ecx, ebx
push edx
push dword [esp + 0x44]
push eax
push 0x35
pop edx
call fcn.180ff616
add esp, 0xc
mov edx, 0x90
mov ecx, ebx
call fcn.180ffb71
mov eax, dword [esp + 0x34]
mov edx, dword [ebp + 0x18]
test eax, eax
je 0x18124699
cmp eax, 3
jbe 0x18124685
cmp eax, 4
je 0x18124517
cmp eax, 6
jne 0x18124699
mov eax, dword [esp + 0x10]
add eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0xc]
mov edx, dword [ebp + 0x30]
push eax
push ecx
push esi
mov ecx, edi
call fcn.181342f1
add esp, 0xc
mov edx, dword [ebp + 0x24]
mov ecx, ebx
call fcn.180ff66f
jmp 0x18124863
mov eax, dword [esp + 0x28]
cmp ecx, eax
je 0x18124594
xor edi, edi
cmp di, word [eax + 0x32]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x4c]
jae 0x18124594
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x38]
lea eax, [edx + edi]
mov ecx, esi
push eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
mov dx, word [eax + edi*2]
call fcn.18119052
cwde
mov ecx, ebx
push eax
mov eax, dword [esp + 0x18]
add eax, dword [ebp + 0x10]
push eax
push 0x59
pop edx
call fcn.180ff616
mov eax, dword [esp + 0x34]
add esp, 0xc
mov edx, dword [esp + 0x20]
inc edi
movzx eax, word [eax + 0x32]
cmp edi, eax
jl 0x18124546
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x28]
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x1812467c
movzx edx, word [eax + 0x32]
mov eax, dword [ebx + 0x6c]
add eax, edx
mov dword [esp + 0x38], 0x34
mov dword [esp + 0x7c], eax
mov eax, dword [ecx + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x30]
je 0x181245c5
mov eax, dword [esp + 0x20]
mov dword [esp + 0x80], eax
xor eax, eax
mov ecx, eax
mov dword [esp + 0x24], ecx
test edx, edx
je 0x181244d6
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x20]
mov edx, dword [edx + ecx*4]
mov ecx, edi
call fcn.1811dade
mov edx, eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x24]
movzx ecx, word [ecx + eax*2]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x28]
movzx ecx, word [ecx + 0x32]
dec ecx
cmp eax, ecx
jne 0x18124621
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x38], 0x35
jmp 0x18124625
mov ecx, dword [esp + 0x7c]
add eax, dword [esp + 0x80]
push 0xfffffffffffffffe
push edx
mov edx, dword [esp + 0x78]
push eax
push ecx
mov ecx, esi
call fcn.18119072
mov ecx, dword [ebp + 0x18]
mov edx, dword [esp + 0x48]
inc ecx
cwde
add eax, ecx
mov ecx, ebx
push eax
call fcn.180ff738
add esp, 0x14
mov edx, 0x90
mov ecx, ebx
call fcn.180ffb71
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x24], ecx
movzx eax, word [eax + 0x32]
cmp ecx, eax
jl 0x181245dc
jmp 0x181244d6
mov eax, dword [esp + 0x34]
jmp 0x181244dd
mov ecx, dword [esp + 0xc]
mov edx, eax
push ecx
mov ecx, edi
call fcn.1811d2b7
pop ecx
jmp 0x18124863
mov eax, dword [ebx + 0x6c]
sub eax, dword [esp + 0x1c]
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x24], eax
je 0x181246b6
mov ecx, edi
call fcn.1811d250
inc dword [esp + 0x64]
cmp dword [esp + 0x44], 0
je 0x181246d7
test edx, edx
je 0x181246d7
xor eax, eax
mov edx, 0xa0
push eax
push eax
push dword [ebp + 0xc]
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
mov edx, dword [ebp + 0x10]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
add eax, edx
cmp ecx, dword [esp + 0x28]
mov ecx, edi
push eax
sete al
movzx eax, al
push eax
push 5
xor eax, eax
push eax
push dword [esp + 0x6c]
push dword [esp + 0x34]
push edx
push dword [ebp + 0xc]
mov edx, esi
push dword [esp + 0x64]
call fcn.1811e8f3
add esp, 0x24
cmp dword [esp + 0x44], 0
je 0x18124734
cmp dword [ebp + 0x18], 0
je 0x18124734
xor eax, eax
mov edx, 0xa1
push eax
push eax
push dword [ebp + 0xc]
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x1812485b
xor ecx, ecx
push ecx
push 1
push eax
push 0x52
pop edx
mov ecx, ebx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, ebx
push eax
push eax
push eax
push 0xb
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x24]
add esp, 0xc
mov ecx, ebx
mov dword [esp + 0x70], eax
call fcn.180ff99a
mov eax, dword [esp + 0xc]
xor edx, edx
dec dword [edi + 0x38]
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x18], ecx
cmp dword [eax + 0x24], edx
je 0x1812479c
push edx
push ecx
push dword [esp + 0x70]
mov ecx, ebx
push 0x32
pop edx
call fcn.180ff616
add esp, 0xc
cmp dword [esp + 0x24], 0
jle 0x1812483b
mov ecx, dword [esp + 0x1c]
mov edx, ecx
mov ecx, ebx
call fcn.180ffe36
push 5
mov esi, eax
lea edi, [esp + 0x90]
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x8c]
cmp al, 0x87
je 0x18124819
mov ecx, dword [esp + 0x18]
movzx edx, al
test byte [edx + 0x181e7af0], 1
jne 0x181247e4
mov ecx, dword [esp + 0x94]
shr eax, 8
movsx eax, al
push eax
push dword [esp + 0xa0]
push dword [esp + 0xa0]
push ecx
push dword [esp + 0xa0]
mov ecx, ebx
call fcn.180ff738
mov edx, dword [esp + 0xa2]
add esp, 0x14
mov ecx, ebx
call fcn.180ffb71
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
dec eax
inc ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
test eax, eax
jg 0x181247ab
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
push dword [esp + 0xc]
mov ecx, edi
push 2
pop edx
call fcn.1811d2b7
mov edx, dword [esp + 0x74]
pop ecx
mov ecx, ebx
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
mov dword [esp + 0x6c], 1
mov eax, dword [esp + 0x50]
mov ecx, ebx
cmp eax, dword [esp + 0xc]
jne 0x18124891
mov edx, dword [esp + 0x58]
lea edx, [edx + 1]
call fcn.180ff66f
mov edx, dword [esp + 0x84]
mov ecx, ebx
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
jmp 0x1812489a
mov edx, dword [esp + 0x40]
call fcn.180ff99a
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x30]
je 0x181248b4
push dword [esp + 0x5c]
mov edx, eax
mov ecx, edi
call fcn.18114883
add esp, 4
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp + 8]
mov eax, dword [eax + 0x14]
inc ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
test eax, eax
jne 0x18124172
mov eax, dword [esp + 0x60]
test eax, eax
je 0x181248f8
mov edx, eax
mov ecx, ebx
call fcn.180ff66f
mov edx, dword [esp + 0x88]
mov ecx, ebx
call fcn.180ffe36
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
cmp dword [esp + 0x64], 0
je 0x18124985
xor eax, eax
mov ecx, ebx
push eax
push dword [esp + 0x1c]
push dword [esp + 0x34]
push 0x14
pop edx
call fcn.180ff616
add esp, 0xc
cmp dword [esp + 0x28], 0
jne 0x1812496f
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x1812494a
push eax
push dword [esp + 0x58]
mov ecx, ebx
push dword [ebp + 0x14]
push 0x35
pop edx
call fcn.180ff616
add esp, 0xc
mov edx, 0x90
mov ecx, ebx
call fcn.180ffb71
push dword [ebp + 0x14]
mov ecx, ebx
push dword [esp + 0x58]
push dword [ebp + 0xc]
push 0x20
pop edx
call fcn.180ff616
add esp, 0xc
mov ecx, edi
push esi
push 2
pop edx
call fcn.1811d3cf
pop ecx
jmp 0x1812497a
mov edx, dword [esp + 0x54]
mov ecx, ebx
call fcn.180ff66f
mov edx, dword [esp + 0x18]
mov ecx, ebx
call fcn.180ff99a
test byte [esi + 0x24], 0x80
jne 0x181249c0
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
push dword [ecx + eax*4]
movsx eax, word [esi + 0x2c]
mov ecx, ebx
push eax
mov eax, dword [ebp + 0x14]
inc eax
push eax
push 0x5b
pop edx
call fcn.180ff616
add esp, 0xc
cmp byte [esp + 0x17], 0
jne 0x181249c0
xor eax, eax
mov edx, esi
push eax
mov ecx, ebx
call fcn.18122659
pop ecx
mov eax, dword [ebp + 0x28]
mov ecx, dword [esp + 0x6c]
pop edi
pop esi
mov dword [eax], ecx
pop ebx
mov esp, ebp
pop ebp
ret