Function at 0x5787b4
Capabilities:
Access peb ldr_data
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb8
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x3c], edx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
lea esi, [ebp - 4]
xor eax, eax
push ebp
push 0x5793cc
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [esi]
cmp dword [eax + 0xbc], 0
setne byte [ebp - 0x15]
mov eax, dword [esi]
mov edx, dword [esi]
mov ecx, dword [edx + 8]
mov dword [eax + 0x10], ecx
mov ecx, dword [edx + 0xc]
mov dword [eax + 0x14], ecx
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
cdq
mov ecx, dword [esi]
add eax, dword [ecx + 0x88]
adc edx, dword [ecx + 0x8c]
mov ecx, dword [esi]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
mov eax, dword [esi]
mov edx, dword [esi]
mov ecx, dword [edx + 0x20]
mov dword [eax + 0x28], ecx
mov ecx, dword [edx + 0x24]
mov dword [eax + 0x2c], ecx
mov eax, dword [esi]
mov eax, dword [eax + 0x30]
cdq
mov ecx, dword [esi]
add eax, dword [ecx + 0x88]
adc edx, dword [ecx + 0x8c]
mov ecx, dword [esi]
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x3c], edx
mov eax, dword [esi]
mov dword [eax + 0x44], 0xffffffff
mov eax, dword [esi]
mov dword [eax + 0x48], 0xffffffff
mov eax, dword [esi]
xor edx, edx
mov dword [eax + 0x4c], edx
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jle 0x578878
xor edi, edi
jmp 0x5793a4
mov edx, dword [esi]
cmp dword [edx + 0x50], 0
jne 0x57888c
mov edx, dword [esi]
mov edx, dword [edx + 0x64]
movzx ebx, word [edx + eax*2 - 2]
jmp 0x57889e
mov edx, eax
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov eax, dword [esi]
call fcn.00579f78
mov eax, dword [esi]
mov dword [eax + 0x48], 0xffffffff
mov eax, dword [esi]
xor edx, edx
mov dword [eax + 0x4c], edx
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
jmp 0x57890c
cmp bx, 0xd
je 0x5788c6
cmp bx, 0xa
jne 0x5788f9
cmp bx, 0xd
jne 0x5788e4
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
inc edx
mov eax, dword [esi]
call fcn.00579f38
cmp ax, 0xa
jne 0x5788e4
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
add dword [eax + 0x20], 1
adc dword [eax + 0x24], 0
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
inc eax
mov edx, dword [esi]
mov dword [edx + 0x30], eax
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 4]
test al, al
jne 0x5788ba
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
mov edx, dword [esi]
mov edx, dword [edx + 0x7c]
cmp eax, edx
jge 0x578936
mov ecx, edx
sub ecx, eax
mov edx, eax
mov eax, dword [esi]
call fcn.0057a020
jmp 0x57893f
mov eax, dword [esi]
mov dword [eax + 0x44], 0xffffffff
mov eax, dword [esi]
cmp byte [eax + 0x18], 0
jne 0x578959
mov eax, dword [esi]
cmp dword [eax + 0x4c], 0
je 0x578959
mov edi, 0xffffff95
jmp 0x5793a4
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jle 0x57896c
xor edi, edi
jmp 0x5793a4
mov eax, dword [esi]
mov dword [eax + 0x48], 0xffffffff
mov eax, dword [esi]
xor edx, edx
mov dword [eax + 0x4c], edx
mov byte [ebp - 0x11], 0
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov edx, ebx
mov eax, dword [esi]
mov edi, dword [eax]
call dword [edi + 0x24]
test al, al
je 0x5789e2
mov byte [ebp - 0x11], 1
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
jmp 0x5789b5
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x5789cd
cmp bx, 0xd
je 0x5789cd
cmp bx, 0xa
jne 0x5789a2
mov edx, dword [esi]
mov ecx, dword [edx + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
sub ecx, eax
mov edx, eax
mov eax, dword [esi]
call fcn.0057a020
push ebp
mov eax, ebx
call fcn.00578720
pop ecx
test al, al
je 0x578ae7
mov byte [ebp - 0x11], 1
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x578ae7
mov edx, dword [esi]
mov dword [edx + 0x44], eax
jmp 0x578ac2
cmp bx, 0xd
je 0x578a1d
cmp bx, 0xa
jne 0x578a58
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jge 0x578a41
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
inc edx
mov eax, dword [esi]
call fcn.00579f38
cmp ax, 0xa
jne 0x578a41
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
add dword [eax + 0x20], 1
adc dword [eax + 0x24], 0
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
inc eax
mov edx, dword [esi]
mov dword [edx + 0x30], eax
jmp 0x578aaf
xor edi, edi
mov eax, dword [esi]
mov eax, dword [eax + 0xcc]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
je 0x578a76
mov eax, dword [ebp - 0x34]
sub eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x10], eax
jmp 0x578a7f
inc edi
cmp edi, dword [ebp - 0x10]
jge 0x578aa0
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
add edx, edi
mov eax, dword [esi]
call fcn.00579f38
mov edx, dword [esi]
mov edx, dword [edx + 0xcc]
cmp ax, word [edx + edi*2]
je 0x578a7e
cmp edi, dword [ebp - 0x10]
jne 0x578aaf
mov eax, dword [esi]
mov edx, dword [ebp - 0x10]
add dword [eax + 0x7c], edx
jmp 0x578ad2
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jle 0x578a11
mov edx, dword [esi]
mov ecx, dword [edx + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
sub ecx, eax
mov edx, eax
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
movzx eax, byte [eax + 0x19]
xor al, 1
and al, byte [ebp - 0x11]
je 0x578afe
mov edi, 0xffffff94
jmp 0x5793a4
cmp byte [ebp - 0x11], 0
jne 0x578863
mov eax, dword [esi]
mov dword [eax + 0x48], 0xffffffff
mov eax, dword [esi]
xor edx, edx
mov dword [eax + 0x4c], edx
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 8]
test al, al
je 0x578fca
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x14]
test al, al
je 0x578bc4
mov edi, 0xffffff96
mov word [ebp - 0x14], bx
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578b5c
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
movzx edx, word [ebp - 0x14]
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
mov edx, dword [esi]
mov edx, dword [edx + 0x7c]
cmp eax, edx
jge 0x578b91
mov ecx, edx
sub ecx, eax
mov edx, eax
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x579388
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578bba
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
jmp 0x579388
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x20]
test al, al
je 0x578c56
mov edi, 0xffffff99
mov word [ebp - 0x14], bx
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
movzx edx, word [ebp - 0x14]
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
mov edx, dword [esi]
cmp eax, dword [edx + 0x7c]
jge 0x578c2b
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x579388
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
jmp 0x579388
mov eax, dword [esi]
cmp byte [eax + 0x75], 0
je 0x578e4d
cmp bx, 0x24
jne 0x578e4d
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jge 0x578e4d
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
inc edx
mov eax, dword [esi]
call fcn.00579f38
mov edx, eax
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
jne 0x578e4d
mov edi, 0xffffff96
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578cb8
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
mov dx, 0x24
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a034
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578d16
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x44]
jle 0x578d16
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x579388
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578d3f
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
mov dx, 0x24
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
mov edx, dword [esi]
cmp eax, dword [edx + 0x7c]
jge 0x578d7b
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov dword [ebp - 0x30], eax
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x578dee
mov edx, eax
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
mov dx, 0x24
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
lea eax, [ebp - 0xc]
push eax
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a034
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
mov edx, dword [esi]
cmp eax, dword [edx + 0x7c]
jge 0x578dee
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
call fcn.004082f4
je 0x578e0b
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jle 0x578d44
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x579388
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x578e36
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
jmp 0x578e43
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
sub eax, dword [ebp - 0x30]
mov edx, dword [esi]
sub dword [edx + 0x4c], eax
mov eax, dword [esi]
inc dword [eax + 0x7c]
jmp 0x579388
mov edi, 0xffffff9a
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
inc eax
mov dword [ebp - 0x28], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x48], eax
mov eax, dword [esi]
xor edx, edx
mov dword [eax + 0x4c], edx
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], 1
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, 1
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov eax, dword [esi]
mov eax, dword [eax + 0x90]
push eax
mov eax, dword [esi]
add eax, 0x94
push eax
mov eax, dword [esi]
mov ecx, dword [eax + 0x4c]
mov eax, dword [esi]
mov edx, dword [eax + 0x48]
mov eax, dword [esi]
call fcn.005785b8
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0xffffffff
je 0x578f20
lea ecx, [ebp - 0x3c]
mov eax, dword [esi]
mov eax, dword [eax + 0x90]
mov edx, dword [ebp - 0x1c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x3c]
mov eax, dword [esi]
add eax, 0xc4
call fcn.004073f0
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov dword [ebp - 0x28], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x90]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov edi, eax
test edi, edi
jg 0x578f25
mov ecx, 0x344
mov edx, 0x5793e8
mov eax, 0x57944c
call fcn.00406e58
jmp 0x578f25
mov eax, dword [esi]
dec dword [eax + 0x4c]
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 8]
test al, al
jne 0x578e7b
cmp edi, 0xffffff9a
jne 0x578f97
mov eax, dword [esi]
mov edx, dword [ebp - 0x20]
mov dword [eax + 0x48], edx
mov eax, dword [esi]
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x4c], edx
cmp byte [ebp - 0x15], 0
je 0x578fbd
mov eax, dword [esi]
mov eax, dword [eax + 0xbc]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x578f6d
mov eax, dword [ebp - 0x38]
sub eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 1
jne 0x578fbd
mov eax, dword [esi]
mov edx, dword [eax + 0x48]
mov eax, dword [esi]
call fcn.00579f38
mov edx, dword [esi]
mov edx, dword [edx + 0xbc]
cmp ax, word [edx]
sete al
mov edx, dword [esi]
mov byte [edx + 0xc0], al
jmp 0x578fbd
cmp byte [ebp - 0x15], 0
je 0x578fbd
mov eax, dword [esi]
mov eax, dword [eax + 0xbc]
mov edx, dword [esi]
mov edx, dword [edx + 0xc4]
call fcn.004082f4
sete al
mov edx, dword [esi]
mov byte [edx + 0xc0], al
mov eax, dword [esi]
mov edx, dword [ebp - 0x28]
mov dword [eax + 0x7c], edx
jmp 0x579388
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0xc]
test al, al
jne 0x578fe1
cmp bx, 0x5f
jne 0x5791ea
mov edi, 0xffffff99
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
mov word [ebp - 0x2a], bx
cmp byte [ebp - 0x15], 0
je 0x57904a
cmp bx, 0x61
jb 0x57900a
cmp bx, 0x7a
ja 0x57900a
sub bx, 0x20
mov eax, dword [esi]
mov eax, dword [eax + 0xbc]
test eax, eax
je 0x57901b
sub eax, 4
mov eax, dword [eax]
mov edx, dword [esi]
mov edx, dword [edx + 0x7c]
mov ecx, dword [esi]
sub edx, dword [ecx + 0x44]
inc edx
cmp eax, edx
jl 0x579045
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
sub eax, dword [edx + 0x44]
mov edx, dword [esi]
mov edx, dword [edx + 0xbc]
cmp bx, word [edx + eax*2]
sete al
jmp 0x579047
xor eax, eax
mov byte [ebp - 0x15], al
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0xc]
test al, al
jne 0x578ff4
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
jne 0x578ff4
cmp bx, 0x5f
je 0x578ff4
mov eax, dword [esi]
cmp byte [eax + 0x74], 0
je 0x5791c4
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
sub eax, dword [edx + 0x44]
dec eax
jne 0x5791c4
cmp word [ebp - 0x2a], 0x71
je 0x5790b4
cmp word [ebp - 0x2a], 0x51
jne 0x5791c4
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x14]
test al, al
je 0x5791c4
mov edi, 0xffffff96
mov word [ebp - 0x14], bx
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x57916d
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov word [ebp - 0x2a], ax
movzx eax, word [ebp - 0x2a]
sub ax, 0x28
je 0x579129
sub ax, 0x14
je 0x579121
sub ax, 0x1f
je 0x579111
sub ax, 0x20
je 0x579119
jmp 0x57912f
mov word [ebp - 0x2a], 0x5d
jmp 0x57912f
mov word [ebp - 0x2a], 0x7d
jmp 0x57912f
mov word [ebp - 0x2a], 0x3e
jmp 0x57912f
mov word [ebp - 0x2a], 0x29
mov byte [ebp - 0x2b], 0
mov eax, dword [esi]
inc dword [eax + 0x7c]
jmp 0x579161
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov eax, dword [esi]
inc dword [eax + 0x7c]
cmp byte [ebp - 0x2b], 0
je 0x579159
cmp bx, word [ebp - 0x14]
je 0x57916d
cmp bx, word [ebp - 0x2a]
sete byte [ebp - 0x2b]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jle 0x57913a
mov eax, dword [esi]
cmp byte [eax + 0x40], 0
je 0x579190
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
jmp 0x579388
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
sub eax, dword [edx + 0x44]
cmp eax, 5
jle 0x579388
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
sub ecx, 5
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
add edx, 3
mov eax, dword [esi]
call fcn.0057a020
jmp 0x579388
mov eax, dword [esi]
movzx edx, byte [ebp - 0x15]
mov byte [eax + 0xc0], dl
mov edx, dword [esi]
mov ecx, dword [edx + 0x7c]
mov eax, dword [esi]
mov eax, dword [eax + 0x44]
sub ecx, eax
mov edx, eax
mov eax, dword [esi]
call fcn.0057a020
jmp 0x579388
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
je 0x579325
mov edi, 0xffffff97
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov dword [ebp - 0x28], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
cmp byte [ebp - 0x15], 0
je 0x57924e
mov eax, dword [esi]
mov edx, dword [eax + 0xbc]
test edx, edx
je 0x579229
sub edx, 4
mov edx, dword [edx]
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
sub eax, dword [ebp - 0x28]
mov ecx, eax
inc ecx
cmp edx, ecx
jl 0x579249
mov edx, dword [esi]
mov edx, dword [edx + 0xbc]
cmp bx, word [edx + eax*2]
sete al
jmp 0x57924b
xor eax, eax
mov byte [ebp - 0x15], al
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
jne 0x579212
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
mov eax, dword [esi]
movzx edx, byte [ebp - 0x15]
mov byte [eax + 0xc0], dl
mov eax, dword [esi]
cmp bx, word [eax + 0xd0]
jne 0x579388
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
inc eax
mov edx, dword [esi]
cmp eax, dword [edx + 0x78]
jg 0x579388
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
inc edx
mov eax, dword [esi]
call fcn.00579f38
mov edx, eax
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
je 0x579388
mov eax, dword [esi]
mov eax, dword [eax + 0x7c]
mov edx, dword [esi]
mov dword [edx + 0x44], eax
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
jmp 0x579300
mov eax, dword [esi]
inc dword [eax + 0x7c]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov ebx, eax
mov edx, ebx
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [ecx + 0x10]
test al, al
jne 0x5792ed
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi]
sub ecx, dword [eax + 0x44]
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
mov eax, dword [esi]
call fcn.0057a020
jmp 0x579388
push 0x57947c
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
mov edx, eax
lea eax, [ebp - 0x44]
call fcn.00407f90
push dword [ebp - 0x44]
push 0x5794c4
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov eax, dword [esi]
call fcn.00579f38
movzx eax, ax
lea ecx, [ebp - 0x48]
mov edx, 4
call fcn.004208ec
push dword [ebp - 0x48]
lea eax, [ebp - 0x40]
mov edx, 4
call fcn.00408244
mov ecx, dword [ebp - 0x40]
mov dl, 1
mov eax, dword [0x41a298]
call fcn.00426a14
call fcn.00406708
cmp edi, 0x80000001
jne 0x5793a4
mov ecx, 0x3ac
mov edx, 0x5793e8
mov eax, 0x57944c
call fcn.00406e58
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5793d3
lea eax, [ebp - 0x48]
mov edx, 4
call fcn.00407070
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.00407070
ret