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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4741d0
push eax
mov dword fs:[0], esp
sub esp, 0x60
cmp dword [ebp + 0x30], 0
push ebx
push esi
mov esi, dword [ebp + 0x20]
push edi
jbe 0x4231ab
mov al, byte [esi]
cmp al, 0x2b
je 0x4231a4
cmp al, 0x2d
jne 0x4231ab
mov ebx, 1
jmp 0x4231ad
xor ebx, ebx
mov edi, dword [ebp + 0x18]
mov ecx, edi
mov dword [esp + 0x20], ebx
call fcn.00407ce0
and eax, 0x3000
cmp eax, 0x3000
je 0x4231ce
mov edx, 0x480a00
jmp 0x4231f5
lea eax, [ebx + 2]
mov edx, 0x480a04
cmp eax, dword [ebp + 0x30]
ja 0x4231f5
cmp byte [ebx + esi], 0x30
jne 0x4231f5
mov cl, byte [ebx + esi + 1]
cmp cl, 0x78
je 0x4231ef
cmp cl, 0x58
jne 0x4231f5
mov ebx, eax
mov dword [esp + 0x20], ebx
push edx
push esi
call fcn.00454590
mov dword [esp + 0x30], eax
mov eax, 0x2e
mov word [esp + 0x20], ax
call fcn.004547ae
mov ecx, dword [eax]
lea eax, [esp + 0x20]
mov cl, byte [ecx]
push eax
push esi
mov byte [esp + 0x28], cl
call fcn.00454590
add esp, 0x10
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x2c]
push eax
mov ecx, edi
call fcn.00411260
push eax
mov dword [esp + 0x78], 0
call fcn.00423ac0
add esp, 4
lea ecx, [esp + 0x2c]
mov esi, eax
mov dword [esp + 0x74], 0xffffffff
call fcn.00401540
mov edx, dword [esi]
push 0x30
mov edx, dword [edx + 0x20]
mov ecx, esi
call edx
lea ecx, [esp + 0x14]
mov byte [esp + 0x24], al
call fcn.00404470
push eax
lea ecx, [esp + 0x3c]
call fcn.00404480
push 0
push 0
lea ecx, [esp + 0x40]
call fcn.00404390
push 0
push dword [ebp + 0x30]
lea ecx, [esp + 0x40]
call fcn.0041aba0
lea ecx, [esp + 0x38]
mov dword [esp + 0x74], 1
call fcn.004044f0
mov ecx, dword [ebp + 0x20]
mov edx, dword [esi]
push eax
mov eax, dword [ebp + 0x30]
add eax, ecx
push eax
push ecx
mov ecx, esi
call dword [edx + 0x1c]
lea eax, [esp + 0x2c]
push eax
mov ecx, edi
call fcn.00411260
push eax
mov byte [esp + 0x78], 2
call fcn.00423fd0
mov esi, eax
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x30], esi
mov byte [esp + 0x74], 1
call fcn.00401540
lea eax, [esp + 0x50]
push eax
mov ecx, esi
call fcn.0041b7e0
mov byte [esp + 0x74], 3
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x13], al
cmp ecx, dword [ebp + 0x30]
jne 0x423329
push dword [esp + 0x24]
mov ecx, dword [ebp + 0x24]
mov eax, dword [esp + 0x2c]
push ecx
lea esi, [eax + ecx]
push eax
lea ecx, [esp + 0x44]
call fcn.00422f90
jmp 0x423385
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0x24]
push edi
push dword [ebp + 0x2c]
add esi, ecx
push dword [esp + 0x30]
lea ecx, [esp + 0x44]
call fcn.00422f90
mov eax, dword [esp + 0x1c]
push edi
push dword [ebp + 0x28]
inc eax
push eax
lea ecx, [esp + 0x44]
call fcn.00422f90
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea ecx, [esp + 0x38]
mov bl, al
call fcn.004044f0
mov ecx, dword [esp + 0x1c]
push edi
push dword [ebp + 0x24]
mov byte [eax + ecx], bl
push ecx
lea ecx, [esp + 0x44]
call fcn.00422f90
mov ebx, dword [esp + 0x20]
lea ecx, [esp + 0x50]
call fcn.004044f0
mov edi, eax
mov al, byte [edi]
cmp al, 0x7f
je 0x423454
lea ebx, [ebx]
test al, al
jle 0x423454
movsx ecx, al
mov eax, esi
sub eax, ebx
cmp ecx, eax
jae 0x423454
sub esi, ecx
mov ecx, dword [esp + 0x48]
cmp ecx, esi
jb 0x42349a
or eax, 0xffffffff
sub eax, ecx
cmp eax, 1
jbe 0x423491
lea eax, [ecx + 1]
push 0
push eax
lea ecx, [esp + 0x40]
mov dword [esp + 0x38], eax
call fcn.004042a0
test al, al
je 0x423440
mov eax, dword [esp + 0x48]
sub eax, esi
push eax
lea ecx, [esp + 0x3c]
call fcn.004044f0
add eax, esi
push eax
lea ecx, [esp + 0x40]
call fcn.004044f0
inc eax
add eax, esi
push eax
call fcn.00401160
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [esp + 0x14], al
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x3c]
call fcn.004044f0
add eax, esi
push eax
call fcn.00401190
add esp, 8
lea ecx, [esp + 0x38]
push dword [esp + 0x30]
call fcn.00404260
cmp byte [edi + 1], 0
lea eax, [edi + 1]
cmovg edi, eax
mov al, byte [edi]
cmp al, 0x7f
jne 0x4233a0
lea ecx, [esp + 0x38]
call fcn.004036b0
mov edi, dword [ebp + 0x18]
mov esi, eax
mov ecx, edi
mov dword [esp + 0x28], esi
call fcn.00408f50
test edx, edx
jl 0x4234a3
jg 0x423477
test eax, eax
je 0x4234a3
mov ecx, edi
call fcn.00408f50
cmp eax, esi
jbe 0x4234a3
mov ecx, edi
call fcn.00408f50
mov esi, eax
sub esi, dword [esp + 0x28]
jmp 0x4234a5
lea ecx, [esp + 0x38]
call fcn.00404430
lea ecx, [esp + 0x38]
call fcn.00404450
xor esi, esi
mov ecx, edi
call fcn.00407ce0
and eax, 0x1c0
cmp eax, 0x40
je 0x423535
cmp eax, 0x100
je 0x4234f0
mov edi, dword [ebp + 8]
push esi
push dword [ebp + 0x1c]
lea eax, [esp + 0x38]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push eax
push edi
call fcn.00423a00
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
add esp, 0x18
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
xor esi, esi
call fcn.004044f0
jmp 0x423541
lea ecx, [esp + 0x38]
call fcn.004044f0
mov edi, dword [ebp + 8]
push ebx
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push edi
call fcn.00423980
mov ecx, dword [eax]
push esi
push dword [ebp + 0x1c]
mov dword [ebp + 0x10], ecx
mov ecx, dword [eax + 4]
mov dword [ebp + 0x14], ecx
push dword [eax + 4]
push dword [eax]
lea eax, [esp + 0x58]
push eax
push edi
call fcn.00423a00
add esp, 0x30
xor esi, esi
jmp 0x423557
lea ecx, [esp + 0x38]
call fcn.004044f0
mov edi, dword [ebp + 8]
push ebx
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push edi
call fcn.00423980
add esp, 0x18
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
call fcn.004044f0
mov ecx, dword [esp + 0x28]
sub ecx, ebx
push ecx
add eax, ebx
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push edi
call fcn.00423980
mov edx, dword [eax]
mov ecx, dword [ebp + 0x18]
add esp, 0x18
mov dword [ebp + 0x10], edx
mov eax, dword [eax + 4]
push 0
push 0
mov dword [ebp + 0x14], eax
call fcn.00408f70
push esi
push dword [ebp + 0x1c]
mov esi, dword [ebp + 0xc]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push esi
push edi
call fcn.00423a00
add esp, 0x18
lea ecx, [esp + 0x50]
call fcn.004033e0
lea ecx, [esp + 0x38]
call fcn.004033e0
mov ecx, dword [esp + 0x6c]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret