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

Disassembly:
sub esp, 0x18
push esi
mov esi, dword [esp + 0x20]
cmp dword [esi + 0xb4], 0
je 0x423695
push dword [esi]
mov eax, dword [esi + 4]
call eax
add esp, 4
mov dword [esi + 0xb4], 0
cmp dword [esi + 0xac], 0
mov eax, dword [esi + 0xd0]
jne 0x423fa3
test eax, eax
jne 0x423fa3
cmp dword [esi + 0x88], eax
je 0x4236c2
mov dword [esi + 0xd0], 9
cmp dword [esi + 0x134], 0
je 0x4236d5
mov dword [esi + 0xd0], 8
mov eax, dword [esi + 0xd0]
test eax, eax
je 0x4236ee
mov dword [esi + 0xac], 1
pop esi
add esp, 0x18
ret
push ebx
push edi
mov edi, dword [esi + 0xb8]
mov eax, edi
or eax, dword [esi + 0xbc]
mov ebx, edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x14], ebx
jne 0x42376a
push dword [esi]
mov eax, dword [esi + 8]
call eax
add esp, 4
test eax, eax
jne 0x423729
push edi
push esi
call fcn.004217f0
add esp, 8
pop edi
pop ebx
pop esi
add esp, 0x18
ret
lea eax, [esp + 0x20]
push eax
push esi
call fcn.00424a80
lea eax, [esi + 0x1c98]
push eax
lea edi, [esi + 0x58]
push edi
call fcn.004248e0
push dword [esi]
mov eax, dword [esi + 0xc]
call eax
sub eax, dword [esi + 0x34]
mov al, byte [eax]
movzx eax, al
push eax
push dword [esi + 0x50]
push edi
call fcn.004230d0
dec dword [esi + 0x34]
mov edi, ebx
add esp, 0x20
inc edi
mov dword [esp + 0x28], edi
mov eax, dword [esi + 8]
push ebp
push dword [esi]
call eax
add esp, 4
test eax, eax
je 0x423fd3
lea ebx, [esi + 0x58]
jmp 0x423786
mov edi, dword [esp + 0x2c]
cmp dword [esi + 0xa4], 0
je 0x42379e
push esi
call fcn.00422ac0
add esp, 4
mov dword [esp + 0x14], eax
jmp 0x4237d7
mov ecx, dword [esi + 0x18]
cmp dword [esi + 0x1c], ecx
jne 0x4237b6
push edi
push esi
call fcn.00421880
add esp, 8
mov dword [esp + 0x14], eax
jmp 0x4237d7
lea eax, [ecx + 0x5d5]
shl eax, 5
mov edx, dword [eax + esi + 8]
mov eax, dword [eax + esi + 0xc]
mov dword [esi + 0x90], eax
lea eax, [ecx + 1]
mov dword [esp + 0x14], edx
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x2c]
and ecx, edi
mov edi, dword [ebx]
mov ebp, edi
shl eax, 4
add eax, ecx
mov dword [esp + 0x1c], ecx
movzx ecx, word [esi + eax*2 + 0x1c98]
shr ebp, 0xb
imul ebp, ecx
lea edx, [esi + eax*2]
mov eax, dword [esi + 0x90]
mov dword [esp + 0x10], eax
cmp eax, 0xffffffff
jne 0x4238ba
mov eax, 0x800
sub eax, ecx
shr eax, 5
add eax, ecx
mov word [edx + 0x1c98], ax
cmp ebp, 0x1000000
jae 0x423835
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
push dword [esi]
mov eax, dword [esi + 0xc]
mov dword [ebx], ebp
call eax
mov ebp, dword [esp + 0x30]
mov edi, eax
sub edi, dword [esi + 0x34]
mov ecx, ebp
mov eax, dword [esi + 0x50]
add esp, 4
shl ecx, 8
movzx edx, byte [edi - 1]
add edx, ecx
mov ecx, dword [esi + 0x94]
and edx, dword [esi + 0x48]
shl edx, cl
lea ecx, [edx + edx*2]
lea edx, [eax + ecx*2]
mov ecx, dword [esi + 0x2c]
mov al, byte [edi]
mov byte [esp + 0x2c], al
movzx eax, byte [ecx + 0x468e80]
mov dword [esi + 0x2c], eax
cmp ecx, 7
jae 0x42389a
movzx eax, byte [esp + 0x2c]
push eax
push edx
push ebx
call fcn.004230d0
mov edi, dword [esp + 0x20]
add esp, 0xc
jmp 0x423e9f
sub edi, dword [esi + 0x38]
movzx eax, byte [edi]
push eax
movzx eax, byte [esp + 0x30]
push eax
push edx
push ebx
call fcn.00423170
mov edi, dword [esp + 0x24]
add esp, 0x10
jmp 0x423e9f
sub edi, ebp
mov eax, ecx
add dword [esi + 0x60], ebp
adc dword [esi + 0x64], 0
shr eax, 5
sub ecx, eax
mov word [edx + 0x1c98], cx
cmp edi, 0x1000000
jae 0x4238e3
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
mov ebp, edi
movzx ecx, word [esi + eax*2 + 0x1c38]
lea edx, [esi + eax*2]
shr ebp, 0xb
imul ebp, ecx
cmp dword [esp + 0x10], 4
jae 0x423b24
sub edi, ebp
mov eax, ecx
add dword [esi + 0x60], ebp
adc dword [esi + 0x64], 0
shr eax, 5
sub ecx, eax
mov word [edx + 0x1c38], cx
cmp edi, 0x1000000
jae 0x42392d
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
mov ecx, edi
mov ebp, dword [esp + 0x10]
add eax, 0xe28
movzx edx, word [esi + eax*2]
lea eax, [esi + eax*2]
shr ecx, 0xb
imul ecx, edx
mov dword [esp + 0x20], eax
test ebp, ebp
jne 0x4239e4
mov eax, 0x800
mov edi, ecx
sub eax, edx
shr eax, 5
add eax, edx
mov edx, dword [esp + 0x20]
mov word [edx], ax
cmp ecx, 0x1000000
jae 0x42397b
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
mov ebp, dword [esp + 0x1c]
shl eax, 4
add eax, ebp
movzx ecx, word [esi + eax*2 + 0x1e18]
lea edx, [esi + eax*2]
mov eax, edi
shr eax, 0xb
imul eax, ecx
cmp dword [esp + 0x14], 1
je 0x4239bd
sub edi, eax
add dword [esi + 0x60], eax
mov eax, ecx
adc dword [esi + 0x64], 0
shr eax, 5
sub ecx, eax
mov word [edx + 0x1e18], cx
jmp 0x423ad6
mov edi, eax
mov eax, 0x800
sub eax, ecx
shr eax, 5
add eax, ecx
mov word [edx + 0x1e18], ax
mov eax, dword [esi + 0x2c]
movzx eax, byte [eax + 0x468ea4]
mov dword [esi + 0x2c], eax
jmp 0x423ad6
sub edi, ecx
mov eax, edx
add dword [esi + 0x60], ecx
adc dword [esi + 0x64], 0
shr eax, 5
sub edx, eax
mov eax, dword [esp + 0x20]
mov word [eax], dx
cmp edi, 0x1000000
jae 0x423a0d
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
movzx ecx, word [esi + eax*2 + 0x1c68]
lea edx, [esi + eax*2]
mov eax, edi
shr eax, 0xb
imul eax, ecx
cmp ebp, 1
jne 0x423a45
mov edi, eax
mov eax, 0x800
sub eax, ecx
shr eax, 5
add eax, ecx
mov word [edx + 0x1c68], ax
mov ecx, dword [esi + 0x3c]
jmp 0x423ac9
sub edi, eax
add dword [esi + 0x60], eax
mov eax, ecx
adc dword [esi + 0x64], 0
shr eax, 5
sub ecx, eax
mov word [edx + 0x1c68], cx
cmp edi, 0x1000000
jae 0x423a6e
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
movzx ecx, word [esi + eax*2 + 0x1c80]
lea edx, [esi + eax*2]
mov eax, edi
shr eax, 0xb
imul eax, ecx
cmp ebp, 2
jne 0x423aa3
mov edi, eax
mov eax, 0x800
sub eax, ecx
shr eax, 5
add eax, ecx
mov word [edx + 0x1c80], ax
mov ecx, dword [esi + 0x40]
jmp 0x423ac3
sub edi, eax
add dword [esi + 0x60], eax
mov eax, ecx
adc dword [esi + 0x64], 0
shr eax, 5
sub ecx, eax
mov word [edx + 0x1c80], cx
mov ecx, dword [esi + 0x44]
mov eax, dword [esi + 0x40]
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x38]
mov ebp, dword [esp + 0x1c]
mov dword [esi + 0x3c], eax
mov dword [esi + 0x38], ecx
cmp edi, 0x1000000
jae 0x423ae8
mov ecx, ebx
shl edi, 8
call fcn.00420f80
mov dword [ebx], edi
mov edi, dword [esp + 0x14]
cmp edi, 1
je 0x423e9b
push ebp
lea eax, [edi - 2]
push eax
lea eax, [esi + 0x2698]
push ebx
push eax
call fcn.00422e80
mov eax, dword [esi + 0x2c]
add esp, 0x10
dec dword [esi + 0xc4]
movzx eax, byte [eax + 0x468e98]
mov dword [esi + 0x2c], eax
jmp 0x423e9b
mov eax, 0x800
sub eax, ecx
shr eax, 5
add eax, ecx
mov word [edx + 0x1c38], ax
cmp ebp, 0x1000000
jae 0x423b49
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov eax, dword [esi + 0x2c]
mov edi, dword [esp + 0x14]
mov dword [ebx], ebp
add edi, 0xfffffffe
mov ebp, dword [esp + 0x1c]
movzx eax, byte [eax + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
push ebp
push edi
mov dword [esi + 0x2c], eax
lea eax, [esi + 0x2298]
push ebx
push eax
call fcn.00422e80
mov eax, dword [esi + 0x40]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov dword [esi + 0x44], eax
sub edx, 4
mov eax, dword [esi + 0x3c]
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x38]
mov dword [esi + 0x3c], eax
lea eax, [edx + 1]
mov dword [esi + 0x38], eax
mov eax, edx
inc dword [esi + 0xc0]
mov dword [esp + 0x10], edx
cmp edx, 0x80
jae 0x423bb5
and eax, 0x7f
movzx eax, byte [eax + esi + 0x2a98]
jmp 0x423bd0
cmp edx, 0x20000
sbb ecx, ecx
and ecx, 0xfffffff6
add ecx, 0x10
shr eax, cl
movzx eax, byte [eax + esi + 0x2a98]
lea eax, [eax + ecx*2]
cmp dword [esp + 0x14], 5
lea edx, [eax + 0x40]
mov ebp, dword [ebx]
mov dword [esp + 0x20], eax
jb 0x423be5
mov edi, 3
shl edi, 7
lea ecx, [esi + 0x1f98]
add ecx, edi
mov dword [esp + 0x24], ecx
mov eax, edx
shr eax, 6
movzx edi, word [ecx + eax*2]
lea ebx, [ecx + eax*2]
mov ecx, edx
add edx, edx
shr ecx, 5
and ecx, 1
mov dword [esp + 0x1c], edx
mov edx, ebp
mov eax, ecx
shr edx, 0xb
neg eax
imul edx, edi
and ebp, eax
and eax, edx
sub ebp, eax
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
dec ecx
mov eax, ecx
and ecx, 0x7e1
sub ecx, edi
and eax, edx
add ecx, 0x1f
add ebp, eax
sar ecx, 5
add ecx, edi
mov word [ebx], cx
lea ebx, [esi + 0x58]
cmp ebp, 0x1000000
jae 0x423c56
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
cmp edx, 0x1000
jb 0x423bf4
mov eax, dword [esp + 0x10]
mov dword [ebx], ebp
cmp eax, 4
jb 0x423e97
mov edi, dword [esp + 0x20]
mov edx, edi
shr edx, 1
dec edx
cmp eax, 0x80
jae 0x423ca9
and edi, 1
mov ecx, edx
or edi, 2
shl edi, cl
push eax
add edi, 0x10cc
push edx
lea eax, [esi + edi*2]
push eax
push ebx
call fcn.004249f0
add esp, 0x10
jmp 0x423e97
mov ecx, 0x20
mov edi, eax
sub ecx, edx
or edi, 0xf
shl edi, cl
mov eax, edi
shr ebp, 1
shr eax, 0x1f
neg eax
and eax, ebp
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
add edi, edi
cmp ebp, 0x1000000
jae 0x423cdd
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
cmp edi, 0xf0000000
jne 0x423cb7
movzx edi, word [esi + 0x1c1a]
mov edx, ebp
mov eax, dword [esp + 0x10]
mov ecx, eax
and ecx, 1
shr eax, 1
mov dword [esp + 0x10], eax
mov eax, ecx
shr edx, 0xb
neg eax
imul edx, edi
and ebp, eax
mov dword [esp + 0x24], ecx
and eax, edx
sub ebp, eax
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
dec ecx
mov eax, ecx
and ecx, 0x7e1
sub ecx, edi
and eax, edx
add ecx, 0x1f
add ebp, eax
sar ecx, 5
add ecx, edi
mov word [esi + 0x1c1a], cx
cmp ebp, 0x1000000
jae 0x423d48
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
add edx, 2
mov ecx, eax
mov dword [esp + 0x24], edx
and ecx, 1
shr eax, 1
mov dword [esp + 0x10], eax
mov eax, ecx
movzx edi, word [esi + edx*2 + 0x1c18]
neg eax
mov edx, ebp
mov dword [esp + 0x20], ecx
shr edx, 0xb
and ebp, eax
imul edx, edi
and eax, edx
sub ebp, eax
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
dec ecx
mov eax, ecx
and ecx, 0x7e1
sub ecx, edi
and eax, edx
add ecx, 0x1f
add ebp, eax
sar ecx, 5
add ecx, edi
mov edi, dword [esp + 0x24]
mov word [esi + edi*2 + 0x1c18], cx
cmp ebp, 0x1000000
jae 0x423dbc
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov eax, dword [esp + 0x20]
lea edx, [eax + edi*2]
mov eax, dword [esp + 0x10]
movzx edi, word [esi + edx*2 + 0x1c18]
mov ecx, eax
and ecx, 1
shr eax, 1
mov dword [esp + 0x24], edx
mov edx, ebp
mov dword [esp + 0x10], eax
mov eax, ecx
shr edx, 0xb
neg eax
imul edx, edi
and ebp, eax
mov dword [esp + 0x20], ecx
and eax, edx
sub ebp, eax
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
dec ecx
mov eax, ecx
and ecx, 0x7e1
sub ecx, edi
and eax, edx
add ecx, 0x1f
add ebp, eax
sar ecx, 5
add ecx, edi
mov edi, dword [esp + 0x24]
mov word [esi + edi*2 + 0x1c18], cx
cmp ebp, 0x1000000
jae 0x423e30
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov eax, dword [esp + 0x20]
mov edx, ebp
mov ecx, dword [esp + 0x10]
and ecx, 1
shr edx, 0xb
lea eax, [eax + edi*2]
movzx edi, word [esi + eax*2 + 0x1c18]
lea ebx, [esi + eax*2]
imul edx, edi
mov eax, ecx
neg eax
and ebp, eax
and eax, edx
sub ebp, eax
add dword [esi + 0x60], eax
adc dword [esi + 0x64], 0
dec ecx
mov eax, ecx
and ecx, 0x7e1
sub ecx, edi
and eax, edx
add ecx, 0x1f
add ebp, eax
sar ecx, 5
add ecx, edi
mov word [ebx + 0x1c18], cx
lea ebx, [esi + 0x58]
cmp ebp, 0x1000000
jae 0x423e95
mov ecx, ebx
shl ebp, 8
call fcn.00420f80
mov dword [ebx], ebp
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x2c]
add ebp, edi
sub dword [esi + 0x34], edi
mov dword [esp + 0x2c], ebp
jne 0x423782
cmp dword [esi + 0xa4], 0
jne 0x423f32
cmp dword [esi + 0xc0], 0x40
jb 0x423ef9
push esi
call fcn.00421130
push esi
call fcn.004214b0
mov ecx, dword [esi + 0x9c]
lea eax, [esi + 0x548]
add esp, 8
mov edx, 1
shl edx, cl
lea ecx, [esi + 0x3298]
push eax
lea eax, [esi + 0x2298]
push eax
call fcn.00420e00
cmp dword [esi + 0xc4], 0
jg 0x423f32
mov ecx, dword [esi + 0x9c]
lea eax, [esi + 0x548]
push eax
lea eax, [esi + 0x2698]
mov dword [esi + 0xc4], 0x40
mov edx, 1
shl edx, cl
lea ecx, [esi + 0x769c]
push eax
call fcn.00420e00
push dword [esi]
mov eax, dword [esi + 8]
call eax
add esp, 4
test eax, eax
je 0x423f81
mov edi, dword [esp + 0x2c]
mov eax, edi
mov ebp, dword [esp + 0x18]
sub eax, ebp
mov edx, dword [esp + 0x30]
test edx, edx
je 0x423fa8
add eax, 0x92c
cmp eax, dword [esp + 0x34]
jae 0x423f7d
mov ecx, dword [esi + 0x80]
sub ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x68]
add ecx, dword [esi + 0x70]
add eax, 0x4000
add eax, ecx
cmp eax, edx
jb 0x423786
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
mov eax, ebp
sub eax, ebx
add dword [esi + 0xb8], eax
push ebp
adc dword [esi + 0xbc], 0
push esi
call fcn.004217f0
add esp, 8
pop ebp
pop edi
pop ebx
pop esi
add esp, 0x18
ret
cmp eax, 0x20000
jb 0x423786
sub edi, ebp
add dword [esi + 0xb8], edi
push esi
adc dword [esi + 0xbc], 0
call fcn.004210e0
add esp, 4
pop ebp
pop edi
pop ebx
pop esi
add esp, 0x18
ret
mov ebp, dword [esp + 0x2c]
jmp 0x423f85