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

Disassembly:
sub esp, 0x120
mov eax, dword [0x4c3014]
xor eax, esp
mov dword [esp + 0x11c], eax
mov eax, dword [ecx + 0x34]
push ebx
xor ebx, ebx
mov dword [esp + 0x30], ecx
push ebp
push esi
mov esi, dword [esp + 0x130]
mov dword [esp + 0x84], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x114], ebx
mov byte [esp + 0x118], bl
mov dword [esp + 0x3c], eax
push edi
mov edi, ebx
mov dword [esp + 0x28], edi
mov dword [esp + 0x48], edi
test esi, esi
jne 0x425466
push 7
pop eax
jmp 0x425aaf
movzx ebp, word [ecx + 0x12]
movzx ecx, byte [ecx + 1]
lea esi, [ecx + ebp]
cmp esi, 2
jae 0x42547a
mov edx, ebx
jmp 0x4254a1
test edx, edx
jne 0x425482
mov edx, ebx
jmp 0x425495
cmp edx, esi
jne 0x425494
mov eax, dword [esp + 0x13c]
lea edx, [eax - 2]
add edx, esi
jmp 0x42549c
dec edx
mov eax, dword [esp + 0x13c]
push 2
pop esi
sub esi, eax
lea eax, [esi + 1]
mov dword [esp + 0x70], edx
mov dword [esp + 0x44], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0x68], esi
lea ecx, [eax + esi]
cmp ecx, ebp
jne 0x4254cd
mov eax, dword [esp + 0x3c]
movzx ecx, byte [eax + 6]
mov eax, dword [eax + 0x38]
add ecx, 8
add ecx, eax
jmp 0x4254e8
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
mov ax, word [eax + ecx*2]
mov ch, al
mov cl, ah
movzx eax, word [edx + 0x14]
movzx ecx, cx
and ecx, eax
add ecx, dword [edx + 0x38]
mov dword [esp + 0x78], ecx
lea eax, [esp + 0x90]
mov ecx, dword [ecx]
lea eax, [eax + esi*4]
bswap ecx
mov dword [esp + 0x60], ecx
mov edx, ecx
mov dword [esp + 0x64], ecx
jmp 0x425674
mov eax, dword [esp + 0x20]
mov edx, esi
mov dword [esp + 0x38], edx
mov eax, dword [eax]
movzx ecx, word [eax + 0x12]
movzx eax, byte [eax + 1]
inc ecx
add eax, dword [esp + 0x24]
add ecx, eax
mov eax, esi
dec esi
mov dword [esp + 0x24], ecx
test eax, eax
je 0x4256d0
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x70]
add eax, esi
movzx ecx, word [ebp + 0x16]
cmp eax, ecx
jne 0x425584
cmp byte [ebp + 1], bl
je 0x425584
mov eax, dword [ebp + 0x20]
mov ebp, esi
shl ebp, 2
push eax
mov ecx, dword [eax]
mov dword [esp + ebp + 0x124], eax
mov eax, dword [esp + 0x40]
bswap ecx
push eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], ecx
call dword [eax + 0x4c]
movzx eax, ax
mov dword [esp + ebp + 0xb8], eax
mov eax, dword [esp + 0x44]
mov byte [eax + 1], bl
jmp 0x425665
movzx eax, byte [ebp + 1]
mov ecx, dword [esp + 0x70]
sub ecx, eax
mov eax, dword [ebp + 0x40]
add ecx, edx
mov ax, word [eax + ecx*2 - 2]
mov ch, al
mov cl, ah
movzx eax, word [ebp + 0x14]
movzx ecx, cx
and ecx, eax
mov eax, dword [ebp + 0x38]
add eax, ecx
lea ebp, [edx*4 - 4]
push eax
mov dword [esp + 0x24], eax
mov dword [esp + ebp + 0x124], eax
mov ecx, dword [eax]
mov eax, dword [esp + 0x40]
bswap ecx
push eax
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], ecx
call dword [eax + 0x4c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x40]
movzx eax, ax
mov dword [esp + 0x6c], eax
mov dword [esp + ebp + 0xb0], eax
test byte [ecx + 0x16], 4
je 0x425641
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov edx, ecx
sub edx, dword [edi + 0x38]
mov edi, dword [esp + 0x40]
add eax, edx
cmp eax, dword [edi + 0x24]
mov edi, ebx
jg 0x4256a2
push dword [esp + 0x6c]
mov eax, dword [esp + 0x8c]
push ecx
add eax, edx
push eax
call fcn.0047e230
mov ecx, dword [esp + 0x48]
add esp, 0xc
mov eax, dword [esp + 0x88]
sub eax, dword [ecx + 0x38]
add eax, dword [esp + 0x20]
mov dword [esp + ebp + 0x120], eax
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x74]
dec edx
push eax
mov eax, dword [esp + 0x44]
movzx eax, byte [eax + 1]
sub ecx, eax
add edx, ecx
mov ecx, dword [esp + 0x44]
call fcn.00424a25
mov edx, dword [esp + 0x68]
lea eax, [esp + 0x98]
pop ecx
pop ecx
add eax, ebp
mov ecx, dword [esp + 0x40]
push ebx
push ebx
push eax
mov dword [esp + 0x2c], eax
call fcn.004216ee
mov ebp, eax
add esp, 0xc
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], ebp
test ebp, ebp
je 0x425509
lea eax, [esi*4 + 4]
jmp 0x4256b5
mov ecx, 0xf0e6
call fcn.00461cb5
mov ebp, eax
mov eax, dword [esp + 0x34]
add eax, 4
push eax
lea eax, [esp + 0x94]
push ebx
push eax
call fcn.0047ed30
mov eax, ebx
add esp, 0xc
mov edi, eax
jmp 0x425a6f
mov eax, dword [esp + 0x40]
lea esi, [ecx + 3]
and esi, 0xfffffffc
imul ecx, esi, 6
add ecx, dword [eax + 0x20]
call fcn.00413c51
mov dword [esp + 0x18], eax
mov dword [esp + 0x50], eax
test eax, eax
jne 0x4256fb
push 7
pop ebp
mov edi, ebx
jmp 0x425a6f
mov ecx, dword [esp + 0x90]
lea eax, [eax + esi*4]
mov dword [esp + 0x54], eax
lea eax, [eax + esi*2]
mov dword [esp + 0x38], eax
mov dword [esp + 0x4c], ecx
movzx eax, byte [ecx + 5]
shl ax, 2
movzx eax, ax
mov dword [esp + 0x6c], eax
mov al, byte [ecx + 3]
mov ecx, ebx
mov byte [esp + 0x17], al
movzx eax, al
mov dword [esp + 0x80], eax
mov dword [esp + 0x58], ebx
cmp dword [esp + 0x44], ecx
jle 0x425976
mov esi, dword [esp + ecx*4 + 0x90]
mov dword [esp + 0x24], esi
movzx eax, word [esi + 0x14]
mov edx, dword [esi + 0x38]
mov ecx, eax
mov dword [esp + 0x7c], eax
movzx eax, word [esi + 0xe]
add eax, edx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x34], edx
mov ecx, dword [eax + 0x38]
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x425a5b
movzx eax, word [esi + 0x12]
mov dword [esp + 0x84], eax
add eax, eax
push eax
mov eax, dword [esp + 0x58]
push ebx
lea eax, [eax + edi*2]
push eax
call fcn.0047ed30
mov al, byte [esi + 1]
add esp, 0xc
test al, al
je 0x42585c
mov ecx, dword [esp + 0x54]
movzx eax, al
add eax, eax
push eax
mov eax, dword [esp + 0x88]
add eax, edi
push ebx
lea eax, [ecx + eax*2]
push eax
call fcn.0047ed30
movzx eax, word [esi + 0x16]
add esp, 0xc
mov edx, dword [esp + 0x28]
mov dword [esp + 0x84], eax
test eax, eax
je 0x425825
mov edi, dword [esp + 0x20]
mov esi, eax
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x34]
mov ax, word [edi]
add edi, 2
mov ch, al
mov cl, ah
mov eax, dword [esp + 0x74]
movzx ecx, cx
movzx eax, ax
and ecx, eax
add ecx, ebx
mov dword [ebp + edx*4], ecx
inc edx
mov dword [esp + 0x48], edx
sub esi, 1
jne 0x4257ed
mov ebp, dword [esp + 0x2c]
xor ebx, ebx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x20], edi
mov dword [esp + 0x28], edx
cmp byte [esi + 1], 0
mov edi, dword [esp + 0x18]
mov dword [esp + 0x74], ebx
jbe 0x425860
push 4
mov ebp, ebx
lea ecx, [esi + 0x20]
pop ebx
mov eax, dword [ecx]
add ecx, ebx
mov dword [edi + edx*4], eax
inc edx
movzx eax, byte [esi + 1]
inc ebp
mov dword [esp + 0x48], edx
cmp ebp, eax
jl 0x42583b
mov ebp, dword [esp + 0x2c]
xor ebx, ebx
mov dword [esp + 0x28], edx
jmp 0x425860
mov edi, dword [esp + 0x18]
movzx eax, word [esi + 0xe]
movzx ecx, word [esi + 0x12]
add eax, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
lea eax, [eax + ecx*2]
mov dword [esp + 0x74], eax
cmp esi, eax
jae 0x4258b3
mov ebx, dword [esp + 0x34]
mov ebp, eax
mov ax, word [esi]
add esi, 2
mov ch, al
mov cl, ah
mov eax, dword [esp + 0x7c]
movzx ecx, cx
movzx eax, ax
and ecx, eax
add ecx, ebx
mov dword [edi + edx*4], ecx
inc edx
mov dword [esp + 0x48], edx
cmp esi, ebp
jb 0x425885
mov ebp, dword [esp + 0x2c]
xor ebx, ebx
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x58]
mov dword [esp + ecx*4 + 0xec], edx
cmp ecx, dword [esp + 0x68]
jge 0x425963
cmp byte [esp + 0x17], 0
jne 0x425963
mov esi, dword [esp + 0x54]
movzx eax, word [esp + ecx*4 + 0xb0]
push eax
push dword [esp + ecx*4 + 0x124]
mov word [esi + edx*2], ax
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x40]
add esi, edx
add edx, eax
push esi
mov dword [esp + 0x68], edx
call fcn.0047e230
mov ecx, dword [esp + 0x78]
add esp, 0xc
mov edx, dword [esp + 0x28]
movzx eax, cx
add eax, esi
mov esi, dword [esp + 0x54]
mov dword [edi + edx*4], eax
mov eax, dword [esp + 0x24]
sub word [esi + edx*2], cx
cmp byte [eax + 5], 0
jne 0x425933
mov eax, dword [eax + 0x38]
mov ecx, dword [edi + edx*4]
mov eax, dword [eax + 8]
mov dword [ecx], eax
jmp 0x425956
push 4
pop edi
cmp word [esi + edx*2], di
jae 0x425956
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x38]
mov byte [ecx + eax], bl
inc eax
inc word [esi + edx*2]
cmp word [esi + edx*2], di
jb 0x425944
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x58]
inc edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x48], edx
mov edi, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x58], ecx
cmp ecx, dword [esp + 0x44]
jl 0x425744
mov eax, dword [esp + 0x6c]
mov esi, ebx
movzx ecx, ax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x38], ebx
mov edx, dword [eax + 0x24]
mov eax, dword [esp + 0x44]
add edx, 0xfffffff4
add edx, ecx
mov dword [esp + 0x5c], edx
test eax, eax
jle 0x425a2c
mov ecx, dword [esp + esi*4 + 0x90]
mov dword [esp + 0x68], ecx
movzx eax, word [ecx + 0x10]
sub edx, eax
mov dword [esp + 0x7c], edx
mov dword [esp + esi*4 + 0xb0], edx
js 0x425ac8
cmp byte [ecx + 1], 0
mov dword [esp + 0x74], ebx
jbe 0x425a09
mov esi, dword [esp + 0x74]
mov ebp, ecx
mov edi, edx
lea ebx, [ebp + 0x20]
push dword [ebx]
push ebp
call dword [ebp + 0x4c]
pop ecx
movzx eax, ax
add eax, 2
pop ecx
add edi, eax
inc esi
push 4
pop eax
add ebx, eax
movzx eax, byte [ebp + 1]
cmp esi, eax
jl 0x4259d6
mov esi, dword [esp + 0x38]
xor ebx, ebx
mov ebp, dword [esp + 0x2c]
mov dword [esp + esi*4 + 0xb0], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + esi*4 + 0xec]
mov edx, dword [esp + 0x5c]
mov dword [esp + esi*4 + 0xc4], eax
inc esi
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], esi
cmp esi, eax
jl 0x42599f
xor ecx, ecx
mov dword [esp + 0x24], ebx
mov edx, eax
inc ecx
mov dword [esp + 0x58], edx
test eax, eax
jle 0x425cb9
mov dword [esp + 0x20], ecx
mov eax, ebx
mov dword [esp + 0x34], ebx
mov edx, dword [esp + eax + 0xb0]
mov dword [esp + 0x18], edx
jmp 0x425ba8
mov ecx, 0xf129
call fcn.00461cb5
mov ebp, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ecx, eax
call fcn.00413cf9
cmp dword [esp + 0x44], 0
mov esi, ebx
jle 0x425a98
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + esi*4 + 0x90]
call fcn.00421789
inc esi
cmp esi, edi
jl 0x425a83
mov edi, dword [esp + 0x1c]
test edi, edi
jle 0x425aad
mov ecx, dword [esp + ebx*4 + 0x9c]
call fcn.00421789
inc ebx
cmp ebx, edi
jl 0x425a9c
mov eax, ebp
mov ecx, dword [esp + 0x12c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0047c71d
add esp, 0x120
ret
mov ecx, 0xf18c
jmp 0x425a60
mov dword [esp + 0x18], edx
cmp ecx, dword [esp + 0x58]
jl 0x425b00
inc ecx
mov dword [esp + 0x58], ecx
cmp ecx, 5
jg 0x425dc3
mov dword [esp + eax + 0xb4], ebx
mov edx, dword [esp + eax + 0xb0]
mov dword [esp + eax + 0xc8], edi
mov dword [esp + 0x18], edx
mov esi, dword [esp + eax + 0xc4]
mov ebp, dword [esp + 0x54]
lea ecx, [esi - 1]
mov dword [esp + 0x68], ecx
movzx ecx, word [ebp + ecx*2]
test cx, cx
jne 0x425b3b
lea edx, [esi - 1]
lea ecx, [esp + 0x48]
call fcn.00424c60
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
movzx ecx, ax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], edi
mov ebp, dword [esp + 0x2c]
movzx ecx, cx
add ecx, 2
sub edx, ecx
cmp byte [esp + 0x17], 0
mov dword [esp + 0x18], edx
mov dword [esp + eax + 0xb0], edx
jne 0x425b92
cmp esi, edi
jge 0x425b90
mov ecx, dword [esp + 0x54]
movzx ecx, word [ecx + esi*2]
test cx, cx
jne 0x425b88
mov edx, esi
lea ecx, [esp + 0x48]
call fcn.00424c60
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
movzx ecx, ax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], edi
movzx ecx, cx
add ecx, 2
jmp 0x425b92
mov ecx, ebx
add dword [esp + eax + 0xb4], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + eax + 0xc4], ecx
mov ecx, dword [esp + 0x20]
cmp edx, dword [esp + 0x5c]
jg 0x425acf
mov esi, dword [esp + eax + 0xc4]
cmp esi, edi
jge 0x425c8e
mov ebp, dword [esp + 0x54]
movzx ecx, word [ebp + esi*2]
test cx, cx
jne 0x425bed
mov edx, esi
lea ecx, [esp + 0x48]
call fcn.00424c60
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x54]
movzx ecx, ax
mov eax, dword [esp + 0x34]
movzx ecx, cx
add ecx, 2
add edx, ecx
mov dword [esp + 0x18], edx
cmp edx, dword [esp + 0x5c]
jg 0x425c5a
inc esi
mov dword [esp + eax + 0xb0], edx
cmp byte [esp + 0x17], 0
mov dword [esp + eax + 0xc4], esi
jne 0x425c4b
cmp esi, edi
jge 0x425c49
movzx ecx, word [ebp + esi*2]
test cx, cx
jne 0x425c41
mov edx, esi
lea ecx, [esp + 0x48]
call fcn.00424c60
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x54]
movzx ecx, ax
mov eax, dword [esp + 0x34]
movzx ecx, cx
add ecx, 2
jmp 0x425c4b
mov ecx, ebx
sub dword [esp + eax + 0xb4], ecx
cmp esi, edi
jl 0x425bc5
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x28], edi
cmp esi, edi
jge 0x425c8a
cmp dword [esp + 0x24], 0
jle 0x425c76
mov ecx, dword [esp + eax + 0xc0]
jmp 0x425c78
mov ecx, ebx
cmp esi, ecx
jle 0x425ddc
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x58]
jmp 0x425c94
mov ecx, dword [esp + 0x20]
mov edx, ecx
mov dword [esp + 0x58], edx
mov esi, dword [esp + 0x24]
add eax, 4
inc esi
mov dword [esp + 0x34], eax
inc ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], ecx
cmp esi, edx
jl 0x425a4b
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x18], ecx
lea esi, [edx - 1]
test esi, esi
jle 0x425e2d
mov eax, dword [esp + esi*4 + 0xb0]
lea ecx, [esp + 0xc4]
mov dword [esp + 0x68], eax
mov eax, dword [esp + esi*4 + 0xac]
mov dword [esp + 0x34], eax
push 4
pop eax
sub ecx, eax
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + esi*4]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x38], eax
lea edi, [eax - 1]
mov edx, edi
sub edx, dword [esp + 0x80]
inc edx
lea eax, [edx + edx]
mov dword [esp + 0x24], eax
cmp word [eax + ecx], bx
jne 0x425d18
lea ecx, [esp + 0x48]
call fcn.00424c60
mov ebp, dword [esp + 0x68]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x68], edi
cmp word [ecx + edi*2], bx
jne 0x425d3d
mov edx, edi
lea ecx, [esp + 0x48]
call fcn.00424c60
mov ecx, dword [esp + 0x54]
test ebp, ebp
je 0x425d7a
cmp dword [esp + 0x13c], 0
mov eax, dword [esp + 0x38]
mov edx, eax
jne 0x425de3
movzx eax, word [ecx + edi*2]
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x54]
sub ecx, eax
mov eax, dword [esp + 0x24]
sub ecx, 2
push 0
movzx eax, word [eax + ebx]
add eax, 2
add eax, ebp
pop ebx
cmp eax, ecx
jg 0x425de3
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x54]
push 0xfffffffffffffffe
movzx eax, word [edx + ecx]
sub edx, 2
add eax, 2
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x6c]
add ebp, eax
movzx eax, word [ecx + edi*2]
pop ecx
sub ecx, eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x7c]
add eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], eax
mov dword [ecx + esi*4], edi
sub edi, 1
jns 0x425d1c
jmp 0x425deb
mov ecx, 0xf198
call fcn.00461cb5
mov edi, dword [esp + 0x1c]
mov ebp, eax
mov eax, dword [esp + 0x50]
jmp 0x425a6f
mov ecx, 0xf1b9
jmp 0x425dc8
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
mov dword [esp + esi*4 + 0xac], eax
xor eax, eax
inc eax
mov dword [esp + esi*4 + 0xb0], ebp
mov ebp, dword [esp + 0x2c]
cmp esi, eax
jle 0x425e0a
mov eax, dword [ecx + esi*4 - 4]
jmp 0x425e0c
mov eax, ebx
cmp edx, eax
jle 0x425e8a
dec esi
test esi, esi
jg 0x425cc4
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edi
mov eax, dword [esp + 0x90]
mov esi, ebx
mov eax, dword [eax + 0x38]
movzx eax, byte [eax]
mov dword [esp + 0x38], eax
test edx, edx
jle 0x425f3c
cmp esi, dword [esp + 0x44]
jge 0x425e94
mov ecx, dword [esp + esi*4 + 0x90]
mov dword [esp + esi*4 + 0x9c], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + esi*4 + 0x90], ebx
mov ecx, dword [ecx + 0x48]
call fcn.0041ddb1
inc dword [esp + 0x1c]
mov ebp, eax
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
test ebp, ebp
jne 0x425a67
jmp 0x425f31
mov ecx, 0xf1e3
jmp 0x425dc8
cmp dword [esp + 0x13c], 0
lea edx, [esp + 0x24]
mov eax, dword [esp + 0x60]
push ebx
push 1
pop ecx
cmovne eax, ecx
mov ecx, dword [esp + 0x44]
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.00423e1c
mov ebp, eax
add esp, 0xc
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
test ebp, ebp
jne 0x425a67
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
call fcn.0042159b
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
inc dword [esp + 0x1c]
mov dword [esp + esi*4 + 0x9c], eax
cmp byte [ecx + 0x11], 0
mov dword [esp + esi*4 + 0xec], edi
je 0x425f29
mov edx, dword [eax + 0x54]
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x40]
push dword [ecx + 0x54]
mov ecx, dword [esp + 0x48]
push 5
call fcn.0042087c
mov ebp, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x2c], ebp
test ebp, ebp
jne 0x425a67
mov edx, dword [esp + 0x64]
mov dword [esp + 0x60], edx
inc esi
cmp esi, dword [esp + 0x58]
jl 0x425e48
mov esi, dword [esp + 0x1c]
mov ecx, ebx
test esi, esi
jle 0x42603b
mov eax, dword [esp + ecx*4 + 0x9c]
mov edx, dword [eax + 0x54]
mov eax, dword [eax + 0x48]
mov dword [esp + ecx*4 + 0x100], edx
mov dword [esp + ecx*4 + 0xd8], edx
mov ax, word [eax + 0x18]
mov word [esp + ecx*2 + 0x120], ax
mov eax, ebx
test ecx, ecx
jle 0x425f89
cmp dword [esp + eax*4 + 0x100], edx
je 0x4260f9
inc eax
cmp eax, ecx
jl 0x425f77
inc ecx
cmp ecx, esi
jl 0x425f4a
test esi, esi
jle 0x42603b
mov ebp, ebx
xor eax, eax
mov esi, ebx
inc eax
mov ecx, eax
cmp dword [esp + 0x1c], eax
jle 0x425fcb
mov edi, ebx
mov ebx, dword [esp + 0x1c]
mov edx, ecx
shl edx, 2
mov eax, dword [esp + edx + 0xd8]
cmp eax, dword [esp + edi + 0xd8]
cmovb esi, ecx
cmovb edi, edx
inc ecx
cmp ecx, ebx
jl 0x425fab
xor ebx, ebx
mov edi, dword [esp + esi*4 + 0xd8]
or dword [esp + esi*4 + 0xd8], 0xffffffff
cmp esi, ebp
je 0x426026
jle 0x425fff
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x2c]
mov eax, dword [esp + esi*4 + 0x9c]
inc edx
add edx, esi
mov ecx, dword [eax + 0x48]
xor eax, eax
mov word [ecx + 0x18], ax
call fcn.00419c27
mov eax, dword [esp + ebp*4 + 0x9c]
mov edx, edi
mov ecx, dword [eax + 0x48]
mov ax, word [esp + esi*2 + 0x120]
mov word [ecx + 0x18], ax
call fcn.00419c27
mov eax, dword [esp + ebp*4 + 0x9c]
mov dword [eax + 0x54], edi
mov esi, dword [esp + 0x1c]
inc ebp
cmp ebp, esi
jl 0x425f98
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
test byte [esp + 0x38], 8
mov eax, dword [esp + esi*4 + 0x98]
mov ecx, dword [esp + 0x78]
mov eax, dword [eax + 0x54]
bswap eax
mov dword [ecx], eax
jne 0x426084
mov ecx, dword [esp + 0x44]
cmp ecx, esi
je 0x426084
lea edx, [esp + 0x90]
lea eax, [esp + 0x9c]
cmovge eax, edx
mov eax, dword [eax + ecx*4 - 4]
mov edx, dword [eax + 0x38]
mov eax, dword [esp + esi*4 + 0x98]
mov ecx, dword [eax + 0x38]
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov edx, dword [esp + 0x40]
cmp byte [edx + 0x11], 0
je 0x42623b
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x78], ebx
mov eax, dword [esi + 0x38]
movzx ecx, word [esi + 0x12]
mov dword [esp + 0x20], eax
movzx eax, byte [esi + 1]
add ecx, eax
mov eax, dword [edx + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, ebx
mov dword [esp + 0x80], eax
mov edx, ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x60], edx
test edi, edi
jle 0x426242
mov dword [esp + 0x38], ebx
mov eax, dword [esp + 0x18]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x64], eax
cmp edx, dword [esp + 0x24]
jne 0x42613e
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, dword [esp + 0x1c]
jge 0x426103
mov eax, dword [esp + ecx*4 + 0x9c]
jmp 0x42610a
mov ecx, 0xf22d
jmp 0x425a60
mov eax, dword [esp + ecx*4 + 0x90]
xor ecx, ecx
mov dword [esp + 0x20], eax
cmp byte [esp + 0x17], cl
movzx eax, word [eax + 0x12]
sete cl
add ecx, eax
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + 1]
add eax, dword [esp + 0x24]
add eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x38]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
cmp edx, dword [esp + eax + 0xc4]
jne 0x42616d
mov eax, dword [esp + 0x78]
inc eax
mov dword [esp + 0x78], eax
shl eax, 2
cmp byte [esp + 0x17], 0
mov dword [esp + 0x38], eax
mov esi, dword [esp + eax + 0x9c]
je 0x42622a
cmp ecx, dword [esp + 0x1c]
jge 0x4261a0
mov eax, dword [esi + 0x54]
cmp eax, dword [esp + ecx*4 + 0x100]
mov ecx, dword [esp + 0x64]
jne 0x4261a4
mov eax, dword [esp + 0x20]
cmp ecx, eax
jb 0x4261a4
add eax, dword [esp + 0x80]
mov ebp, dword [esp + 0x2c]
cmp ecx, eax
jb 0x42622a
jmp 0x4261a4
mov ecx, dword [esp + 0x64]
cmp word [esp + 0x6c], 0
jne 0x4261d2
mov edx, dword [ecx]
lea eax, [esp + 0x30]
mov ecx, dword [esp + 0x40]
push eax
push dword [esi + 0x54]
bswap edx
push 5
call fcn.0042087c
mov ebp, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [esp + 0x60]
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x54]
movzx eax, word [eax + edx*2]
test ax, ax
je 0x4261e3
mov ecx, eax
jmp 0x4261ff
lea ecx, [esp + 0x48]
call fcn.00424c60
mov edi, dword [esp + 0x48]
movzx ecx, ax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edi
cmp cx, word [esi + 0xc]
jbe 0x42621e
mov edx, dword [esp + 0x64]
lea eax, [esp + 0x30]
push eax
mov ecx, esi
call fcn.00420c5e
mov ebp, dword [esp + 0x34]
pop ecx
mov dword [esp + 0x2c], ebp
test ebp, ebp
jne 0x425a67
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x34]
inc edx
mov dword [esp + 0x60], edx
cmp edx, edi
jl 0x4260d4
mov esi, dword [esp + 0x9c]
mov eax, dword [esp + 0x1c]
mov edi, ebx
dec eax
test eax, eax
jle 0x42635f
mov ecx, dword [esp + edi*4 + 0xc4]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + edi*4 + 0x9c]
mov esi, dword [eax + ecx*4]
mov eax, dword [esp + 0x54]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x6c]
movzx edx, ax
mov dword [esp + 0x80], eax
movzx eax, cx
mov ecx, dword [esp + edi*4 + 0xc4]
add edx, eax
mov eax, dword [esp + 0x88]
add eax, dword [esp + 0x8c]
cmp byte [ebp + 5], 0
mov dword [esp + 0x24], eax
jne 0x4262aa
mov ecx, dword [ebp + 0x38]
mov eax, dword [esi]
mov dword [ecx + 8], eax
jmp 0x42630e
cmp byte [esp + 0x17], 0
je 0x4262f1
lea eax, [esp + 0x100]
push eax
mov eax, dword [esp + 0x1c]
push dword [eax + ecx*4 - 4]
push ebp
call dword [ebp + 0x50]
mov eax, dword [esp + 0x30]
add esp, 0xc
mov esi, eax
push dword [esp + 0x104]
lea ecx, [eax + 4]
push dword [esp + 0x104]
call fcn.004168c2
pop ecx
pop ecx
mov edx, eax
push 4
pop eax
add edx, eax
mov eax, ebx
jmp 0x426312
push 4
pop ecx
sub esi, ecx
cmp word [esp + 0x80], cx
jne 0x426312
mov eax, dword [esp + 0x3c]
push esi
push eax
call dword [eax + 0x4c]
pop ecx
pop ecx
movzx edx, ax
mov eax, dword [esp + 0x24]
add dword [esp + 0x8c], edx
lea ecx, [esp + 0x30]
push ecx
push dword [ebp + 0x54]
mov ecx, dword [esp + 0x44]
push eax
push edx
mov edx, dword [esp + 0x80]
push esi
lea edx, [edx + edi]
call fcn.00424b28
mov ebp, dword [esp + 0x44]
add esp, 0x14
mov dword [esp + 0x2c], ebp
test ebp, ebp
jne 0x425a67
mov eax, dword [esp + 0x1c]
inc edi
dec eax
cmp edi, eax
jl 0x426251
mov esi, dword [esp + 0x9c]
mov edi, dword [esp + 0x1c]
xor eax, eax
lea ebp, [eax + 1]
sub ebp, edi
cmp ebp, edi
jge 0x426459
mov eax, ebp
cdq
mov esi, eax
xor esi, edx
sub esi, edx
cmp byte [esp + esi + 0x118], 0
jne 0x426441
test ebp, ebp
jns 0x4263a1
mov eax, dword [esp + esi*4 + 0xe8]
cmp eax, dword [esp + esi*4 + 0xc0]
jl 0x426441
test esi, esi
jne 0x4263b2
mov edx, dword [esp + 0xc4]
mov eax, ebx
mov ecx, ebx
jmp 0x4263e7
cmp esi, dword [esp + 0x44]
jge 0x4263ca
xor eax, eax
cmp byte [esp + 0x17], al
sete al
add eax, dword [esp + esi*4 + 0xe8]
jmp 0x4263ce
mov eax, dword [esp + 0x28]
mov edx, dword [esp + esi*4 + 0xc4]
xor ecx, ecx
cmp byte [esp + 0x17], cl
sete cl
add ecx, dword [esp + esi*4 + 0xc0]
sub edx, ecx
lea edi, [esp + 0x48]
push edi
push edx
push ecx
mov ecx, dword [esp + esi*4 + 0xa8]
mov edx, eax
call fcn.00424f33
mov edi, dword [esp + 0x28]
add esp, 0xc
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
test eax, eax
jne 0x4264ac
mov cx, word [esp + 0x5c]
xor eax, eax
mov edi, dword [esp + 0x48]
inc eax
sub cx, word [esp + esi*4 + 0xb0]
mov byte [esp + esi + 0x118], al
mov eax, dword [esp + esi*4 + 0x9c]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x1c]
mov word [eax + 0x10], cx
inc ebp
cmp ebp, edi
jl 0x426372
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x138], 0
je 0x4264bd
mov ebp, dword [esp + 0x3c]
cmp word [ebp + 0x12], bx
jne 0x4264bd
movzx eax, byte [ebp + 6]
cmp ax, word [esi + 0x10]
ja 0x4264bd
mov ecx, esi
call fcn.00420ca6
mov ecx, dword [esp + 0x9c]
mov edx, ebp
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
push eax
call fcn.00425342
pop ecx
mov ecx, dword [esp + 0x9c]
lea edx, [esp + 0x30]
call fcn.00424673
mov ebp, dword [esp + 0x30]
jmp 0x42650b
mov ebp, dword [esp + 0x50]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x2c]
jmp 0x425a6b
mov eax, dword [esp + 0x40]
cmp byte [eax + 0x11], 0
je 0x426507
cmp word [esp + 0x6c], 0
jne 0x426507
mov esi, ebx
test edi, edi
jle 0x426507
mov ebx, eax
mov eax, dword [esp + esi*4 + 0x9c]
lea ecx, [esp + 0x30]
push ecx
mov ecx, ebx
push dword [eax + 0x54]
mov eax, dword [eax + 0x38]
push 5
mov edx, dword [eax + 8]
bswap edx
call fcn.0042087c
add esp, 0xc
inc esi
cmp esi, edi
jl 0x4264d7
mov ebp, dword [esp + 0x30]
xor ebx, ebx
jmp 0x42650b
mov ebp, dword [esp + 0x2c]
mov esi, edi
cmp edi, dword [esp + 0x44]
jge 0x425a6b
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + esi*4 + 0x90]
lea edx, [esp + 0x30]
call fcn.00424673
inc esi
cmp esi, edi
jl 0x42651b
mov ebp, dword [esp + 0x30]
jmp 0x425a67