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

Disassembly:
sub esp, 0xbc
push ebx
mov ebx, dword [esp + 0xc4]
push esi
mov dword [esp + 0x14], 0
mov eax, dword [ebx]
mov esi, dword [ebx + 8]
mov eax, dword [eax]
mov dword [esp + 0x40], eax
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0xc], ecx
cmp dword [eax + 0x24], ecx
je 0x5a73f3
mov eax, dword [eax + 0xc]
pop esi
pop ebx
add esp, 0xbc
ret
mov eax, dword [esi + 0x2c]
mov edx, 0x18
push ebp
mov ebp, dword [esp + 0xd4]
test al, 0x20
mov dword [esp + 0x40], eax
mov eax, 0x1bf
push edi
cmove edx, eax
mov edi, dword [ebp + 0x38]
test edi, 0x104
je 0x5a7439
mov ecx, edx
mov eax, edi
and ecx, 0xffffffc3
test al, 4
cmove ecx, edx
mov edx, ecx
test edi, 0x100
je 0x5a7439
and edx, 0xffffff7c
movzx eax, word [esi + 0x1a]
movzx ecx, word [esi + 0x18]
mov dword [esp + 0x54], eax
movzx eax, word [esi + 0x1c]
mov dword [esp + 0x58], eax
movzx eax, word [esi + 0x32]
mov dword [esp + 0x5c], eax
movzx eax, word [esi + 0x30]
mov dword [esp + 0x38], eax
mov eax, dword [esi]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x50], eax
movzx eax, word [esi + 0x16]
mov edi, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xd4]
push ebp
push edx
mov dword [esp + 0x6c], edi
movzx edi, cx
push edi
push dword [eax + 0x2c]
lea eax, [esp + 0x7c]
mov dword [esp + 0x50], ecx
push dword [ebx + 4]
mov dword [esp + 0x2c], edi
push eax
call fcn.005ab3c0
mov ebx, eax
add esp, 0x18
xor eax, eax
mov dword [esp + 0x20], ebx
mov word [esi + 0x12], ax
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx]
mov eax, ecx
mov dword [esp + 0x60], eax
cmp ax, 0xa
jg 0x5a74c8
mov dword [esp + 0x30], 0
jmp 0x5a74e1
movsx eax, cx
cdq
push edx
push eax
call fcn.00565e30
add esp, 8
sub ax, 0x21
movzx eax, ax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xdc]
mov ecx, 0x100
mov dword [esp + 0x28], eax
test ebx, ebx
je 0x5a7b4e
movzx edx, word [ebx + 0xc]
lea ebp, [ebx + 0xa]
mov eax, edx
mov dword [esp + 0x10], 0
mov dword [esp + 0x24], eax
cmp ax, cx
je 0x5a7519
test byte [ebp], 0x80
je 0x5a756e
mov edi, dword [esp + 0xd8]
mov ecx, dword [esp + 0x18]
mov eax, dword [edi + 4]
movsx ecx, word [eax + ecx*2]
test ecx, ecx
js 0x5a7567
mov eax, dword [edi + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
test dword [eax + ecx*8 + 4], 0xf
je 0x5a7575
mov ebp, edi
lea eax, [esp + 0x6c]
push eax
call fcn.005ab4d0
add esp, 4
mov ebx, eax
cmp dword [esp + 0x1c], 0
mov ecx, 0x100
mov dword [esp + 0x20], ebx
je 0x5a74f1
jmp 0x5a7b4e
cmp ecx, 0xffffffff
je 0x5a7541
jmp 0x5a7575
mov edi, dword [esp + 0xd8]
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
and ecx, dword [ebx + 0x20]
and eax, dword [ebx + 0x24]
or ecx, eax
jne 0x5a7b3b
mov eax, 0x100
test word [ebp], ax
je 0x5a759d
cmp edx, 0x10
je 0x5a7b3b
mov eax, dword [esp + 0xd4]
mov cl, byte [eax + 0x24]
test cl, 0x58
je 0x5a75e2
mov eax, dword [ebx]
mov edx, dword [eax + 4]
test dl, 3
je 0x5a7b3b
mov edi, dword [esp + 0xd4]
mov eax, dword [eax + 0x24]
cmp eax, dword [edi + 0x2c]
mov edi, dword [esp + 0xd8]
jne 0x5a7541
test cl, 0x18
je 0x5a75e2
test dl, 2
jne 0x5a7541
cmp byte [edi + 0x36], 0
je 0x5a7600
movzx eax, word [edi + 0x32]
dec eax
cmp dword [esp + 0x18], eax
jne 0x5a7600
mov eax, dword [esp + 0xd0]
or byte [eax + 0x10], 2
jmp 0x5a760b
mov eax, dword [esp + 0xd0]
or byte [eax + 0x10], 1
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x54]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1c], ax
movzx eax, cx
mov word [esi + 0x30], cx
cmp ax, word [esi + 0x34]
jb 0x5a7652
inc eax
push eax
push esi
push dword [esp + 0x3c]
call fcn.005a9440
add esp, 0xc
test eax, eax
jne 0x5a7b47
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], ebx
mov ax, word [esi + 0x30]
mov ecx, dword [esi + 8]
inc ax
mov word [esi + 0x30], ax
not ecx
movzx ebx, ax
mov eax, dword [esp + 0x20]
or edi, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
and edi, ecx
mov eax, dword [esi + 0xc]
or edx, dword [esp + 0x50]
not eax
and edx, eax
mov dword [esi], edi
mov eax, dword [esp + 0x24]
mov dword [esi + 4], edx
test al, 1
je 0x5a779a
mov edx, dword [esp + 0x20]
mov edx, dword [edx]
test dword [edx + 4], 0x1000
je 0x5a7718
lea edi, [ebx - 1]
mov ebp, 0x2e
xor ecx, ecx
mov dword [esp + 0x10], ebp
test edi, edi
jle 0x5a7739
mov ebx, dword [esi + 0x38]
nop
mov eax, dword [ebx + ecx*4]
test eax, eax
je 0x5a76d6
cmp dword [eax], edx
mov dword [esp + 0x10], 0
cmove ebp, dword [esp + 0x10]
inc ecx
cmp ecx, edi
jl 0x5a76c0
mov dword [esp + 0x10], ebp
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0xd8]
test byte [ebp + 0x38], 0x80
je 0x5a7786
cmp word [esp + 0x30], 0xa
jl 0x5a7786
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x18]
movzx edi, cx
movzx ebx, word [eax + edx*2]
cmp di, 0xa
jg 0x5a773d
xor eax, eax
jmp 0x5a7752
mov eax, dword [edx + 0x14]
test eax, eax
je 0x5a76df
mov eax, dword [eax]
test eax, eax
je 0x5a76df
cdq
push edx
push eax
call fcn.00565e30
movsx ecx, ax
add esp, 8
mov dword [esp + 0x10], ecx
jmp 0x5a76e3
mov ecx, ebp
jmp 0x5a76e3
movsx eax, di
cdq
push edx
push eax
call fcn.00565e30
add esp, 8
sub ax, 0x21
movzx eax, ax
sub eax, edi
sub eax, dword [esp + 0x30]
add eax, 0xa
add eax, ebx
test ax, ax
jns 0x5a7786
cmp word [esp + 0x28], 2
jge 0x5a7543
mov eax, dword [esp + 0x34]
test dword [eax + 0x50], 0x20000
jne 0x5a7543
or dword [esi + 0x2c], 0x100000
or dword [esi + 0x2c], 4
mov ebx, dword [esi + 0x2c]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
jmp 0x5a790b
test al, 0x82
je 0x5a782f
mov ebp, dword [esp + 0xd8]
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp + 4]
movsx eax, word [eax + ecx*2]
mov ecx, dword [esi + 0x2c]
or ecx, 1
mov dword [esi + 0x2c], ecx
cmp eax, 0xffffffff
je 0x5a7800
mov edx, ecx
mov ebx, ecx
test eax, eax
js 0x5a780d
cmp word [esp + 0x28], 0
jne 0x5a780d
movzx eax, word [ebp + 0x32]
mov edi, eax
dec eax
cmp dword [esp + 0x18], eax
jne 0x5a780d
test byte [ebp + 0x38], 8
jne 0x5a7800
cmp edi, 1
jne 0x5a77f8
cmp byte [ebp + 0x36], 0
je 0x5a77f8
cmp word [esp + 0x24], 2
je 0x5a7800
or ebx, 0x10000
jmp 0x5a7808
mov ebx, ecx
or ebx, 0x1000
mov edx, ebx
mov dword [esi + 0x2c], ebx
cmp byte [esp + 0x85], 1
jbe 0x5a7822
mov ebx, edx
or ebx, 0x200000
mov dword [esi + 0x2c], ebx
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
jmp 0x5a790b
mov edi, dword [esp + 0x20]
test eax, 0x100
je 0x5a784c
mov ebx, dword [esi + 0x2c]
mov edx, dword [esp + 0x14]
or ebx, 8
mov dword [esi + 0x2c], ebx
jmp 0x5a7904
mov eax, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
push edi
push dword [esp + 0x1c]
push edx
push dword [eax + 0x2c]
push dword [esp + 0x58]
call fcn.005ab120
mov ebx, dword [esi + 0x2c]
add esp, 0x14
test byte [esp + 0x24], 0x24
je 0x5a78de
or ebx, 0x22
mov word [esi + 0x1a], ax
xor ecx, ecx
mov dword [esi + 0x2c], ebx
mov eax, 0x100
mov dword [esp + 0x14], edi
mov dword [esp + 0x2c], ecx
test word [ebp], ax
je 0x5a78d8
movzx eax, word [esi + 0x30]
lea ebx, [edi + 0x30]
inc eax
mov dword [esp + 0x2c], ebx
push eax
push esi
push dword [esp + 0x3c]
call fcn.005a9440
add esp, 0xc
test eax, eax
jne 0x5a7b47
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov dword [eax + ecx*4], ebx
mov eax, 1
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x10
mov ebx, dword [esi + 0x2c]
mov word [esi + 0x1c], ax
mov edx, dword [esp + 0x14]
jmp 0x5a7904
or ebx, 0x12
mov word [esi + 0x1c], ax
mov dword [esi + 0x2c], ebx
mov dword [esp + 0x2c], edi
test bl, 0x20
je 0x5a78fe
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edx, dword [eax + ecx*4 - 8]
jmp 0x5a7900
xor edx, edx
mov dword [esp + 0x14], edx
mov ebp, dword [esp + 0xd8]
test bl, 2
je 0x5a79b0
movzx eax, word [esi + 0x16]
movsx edi, ax
test edx, edx
je 0x5a7935
movzx ecx, word [edx + 8]
test cx, cx
jg 0x5a792c
add eax, ecx
jmp 0x5a7935
test byte [edx + 0xa], 0x80
jne 0x5a7935
sub eax, 0x14
mov ebp, dword [esp + 0x2c]
movzx ecx, ax
test ebp, ebp
je 0x5a7959
movzx edx, word [ebp + 8]
test dx, dx
jg 0x5a794d
add eax, edx
jmp 0x5a7956
test byte [ebp + 0xa], 0x80
jne 0x5a7959
add eax, 0xffffffec
movzx ecx, ax
mov eax, dword [esp + 0x14]
movzx edx, cx
test eax, eax
je 0x5a797c
cmp word [eax + 8], 0
jle 0x5a797c
test ebp, ebp
je 0x5a797c
cmp word [ebp + 8], 0
jle 0x5a797c
lea eax, [ecx - 0x14]
movzx edx, ax
xor eax, eax
cmp dword [esp + 0x14], eax
setne al
sub edi, eax
xor eax, eax
test ebp, ebp
setne al
sub edi, eax
cmp dx, 0xa
mov eax, 0xa
cmovl edx, eax
movzx eax, dx
cmp eax, edi
mov edx, eax
movzx eax, di
cmovge edx, eax
movzx eax, dx
mov ebp, eax
jmp 0x5a7a09
inc word [esi + 0x18]
movzx ecx, word [edi + 8]
movzx edx, word [esi + 0x18]
test cx, cx
jg 0x5a79de
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x18]
cmp word [eax + edi*2], 0
jl 0x5a79de
sub ecx, dword [esp + 0x10]
add cx, word [esi + 0x16]
movzx eax, cx
mov ebp, eax
jmp 0x5a7a09
mov eax, dword [ebp + 8]
mov cx, word [eax + edx*2]
sub cx, word [eax + edx*2 - 2]
add cx, word [esi + 0x16]
test dword [esp + 0x24], 0x100
movzx eax, cx
mov ecx, eax
mov word [esi + 0x16], ax
mov ebp, eax
je 0x5a7a0d
lea eax, [ecx + 0xa]
movzx ebp, ax
mov word [esi + 0x16], ax
mov edx, dword [esp + 0xd8]
movzx eax, bp
mov dword [esp + 0x20], eax
lea eax, [ebp + 0x10]
movzx ecx, ax
mov eax, dword [edx + 0x38]
and eax, 3
mov dword [esp + 0x24], ecx
cmp al, 3
jne 0x5a7a37
movzx edx, cx
movzx eax, cx
jmp 0x5a7a60
mov eax, dword [esp + 0xd4]
movsx ecx, word [edx + 0x30]
mov eax, dword [eax + 0x10]
movsx edi, word [eax + 0x28]
mov eax, ecx
shl eax, 4
sub eax, ecx
cdq
idiv edi
inc eax
add eax, ebp
movzx edx, ax
mov eax, dword [esp + 0x24]
movzx eax, ax
push edx
push dword [esp + 0x34]
movzx edi, ax
call fcn.00565ed0
add esp, 8
movzx ecx, ax
test ebx, 0x4000140
jne 0x5a7a88
push edi
push eax
call fcn.00565ed0
add esp, 8
movzx ecx, ax
mov eax, dword [esp + 0x10]
push dword [esp + 0x60]
mov ebx, dword [esp + 0xd4]
movzx edi, ax
push esi
lea eax, [ecx + edi]
add eax, dword [esp + 0x30]
mov word [esi + 0x14], ax
lea eax, [edi + ebp]
add eax, dword [esp + 0x30]
mov word [esi + 0x16], ax
push dword [ebx + 4]
call fcn.005a91e0
push esi
push ebx
call fcn.005a8f30
mov ecx, dword [esp + 0x78]
add esp, 0x14
mov ebp, dword [esp + 0xd8]
movzx edx, cx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x2c]
test al, 2
movzx ecx, cx
cmove edx, ecx
mov word [esi + 0x16], dx
test al, 0x10
jne 0x5a7b2e
movzx ecx, word [esi + 0x18]
cmp cx, word [ebp + 0x34]
jae 0x5a7b2e
cmp cx, word [ebp + 0x32]
jb 0x5a7b05
mov eax, dword [ebp + 0x38]
and al, 3
cmp al, 2
je 0x5a7b2e
cmp ecx, 3
jbe 0x5a7b16
push dword [esp + 0x48]
call fcn.00570f10
add esp, 4
mov eax, dword [esp + 0x28]
add eax, edi
push eax
push ebp
push dword [esp + 0xdc]
push ebx
call fcn.005a73b0
add esp, 0x10
mov eax, dword [esp + 0x3c]
mov word [esi + 0x16], ax
jmp 0x5a7543
mov ebp, dword [esp + 0xd8]
jmp 0x5a7543
mov ebp, dword [esp + 0xd8]
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x5c]
mov dword [esi], eax
mov eax, dword [esp + 0x50]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x54]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0x44]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x38]
mov word [esi + 0x18], bx
mov word [esi + 0x32], cx
mov word [esi + 0x30], ax
cmp bx, cx
jne 0x5a7c89
mov edi, dword [esp + 0x18]
movzx ecx, word [ebp + 0x32]
lea eax, [edi + 1]
cmp eax, ecx
jae 0x5a7c89
mov eax, dword [esp + 0x38]
movzx edx, ax
cmp bx, dx
jne 0x5a7c89
mov eax, dword [ebp + 0x38]
test al, 0x40
jne 0x5a7c89
test al, al
jns 0x5a7c89
mov ecx, dword [esp + 0x34]
test dword [ecx + 0x50], 0x4000
jne 0x5a7c89
mov eax, dword [ebp + 8]
cmp word [eax + edi*2 + 2], 0x2a
jl 0x5a7c89
inc edx
push edx
push esi
push ecx
call fcn.005a9440
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x5a7c8d
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
inc word [esi + 0x18]
inc word [esi + 0x32]
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4], edi
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x8000
mov eax, dword [ebp + 8]
mov ebx, dword [esp + 0xd0]
mov cx, word [eax + edx*2]
sub cx, word [eax + edx*2 + 2]
movzx eax, cx
mov ecx, dword [esp + 0x28]
sub word [esi + 0x16], ax
add ecx, 5
add eax, ecx
push eax
push ebp
push dword [esp + 0xdc]
push ebx
call fcn.005a73b0
mov eax, dword [esp + 0x4c]
add esp, 0x10
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x5c]
mov word [esi + 0x32], ax
mov eax, dword [esp + 0x44]
mov dword [esi + 0x2c], eax
mov eax, edi
pop edi
pop ebp
pop esi
pop ebx
add esp, 0xbc
ret
mov edi, dword [esp + 0x1c]
mov eax, edi
pop edi
pop ebp
pop esi
pop ebx
add esp, 0xbc
ret