Function at 0x5d904a
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x650028
push eax
mov dword fs:[0], esp
sub esp, 0x30
push ebx
push ebp
push esi
mov esi, ecx
mov al, byte [esi + 0x2c]
test al, al
push edi
je 0x5d93ce
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x5c]
mov eax, ebx
or eax, edi
je 0x5d90fe
mov al, byte [esi + 0x30]
test al, al
je 0x5d93ce
mov ecx, dword [esi + 0x28]
shr ecx, 2
test cl, 1
je 0x5d93ce
xor eax, eax
mov al, 1
push eax
mov ecx, esi
call fcn.005d8cf0
test al, al
je 0x5d93ce
cmp ebp, 1
je 0x5d93fb
cmp ebp, 4
je 0x5d93fb
cmp ebp, 2
jne 0x5d93ce
mov al, byte [esi + 0x33]
test al, al
jne 0x5d9107
push 0
push ebp
mov eax, dword [esi + 0x78]
push edi
cdq
push ebx
push edx
push eax
call fcn.00612240
push edx
push eax
lea ecx, [esi + 0x20]
call fcn.005d7ba0
mov edi, dword [esp + 0x54]
push edx
push eax
push edi
mov ecx, esi
call fcn.005d8580
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
add esp, 0x3c
ret 0x14
cmp ebp, 2
jne 0x5d9089
xor al, al
jmp 0x5d908d
mov ecx, dword [esi + 0x58]
test ecx, ecx
je 0x5d9172
mov eax, dword [esi + 8]
mov ebp, dword [esi + 0x60]
sub eax, ecx
sar eax, 1
cdq
sub ebp, eax
mov eax, dword [esi + 0x64]
sbb eax, edx
mov edx, ebx
or edx, edi
mov dword [esp + 0x58], eax
lea ecx, [esi + 0x20]
jne 0x5d9157
push 2
push 0
push 0
call fcn.005d7ba0
sub eax, ebp
sbb edx, dword [esp + 0x58]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], 0
lea eax, [esp + 0x10]
jmp 0x5d9207
push 0
sub ebx, ebp
push 2
sbb edi, eax
push edi
push ebx
call fcn.005d7ba0
push edx
push eax
lea eax, [esp + 0x3c]
push eax
jmp 0x5d9200
mov al, byte [esi + 0x30]
mov edx, dword [esi + 4]
test al, al
mov eax, dword [esi + 8]
je 0x5d923a
mov ecx, dword [esi + 0x4c]
sub eax, edx
sar eax, 1
imul eax, dword [esi + 0x78]
cdq
mov dword [esp + 0x54], eax
mov ebp, edx
mov edx, dword [esi + 0x40]
mov eax, ecx
sub eax, edx
cdq
cmp ebp, edx
jg 0x5d93ce
jl 0x5d91b1
cmp dword [esp + 0x54], eax
ja 0x5d93ce
mov eax, dword [esi + 0x40]
push ecx
mov ecx, dword [esp + 0x58]
add eax, ecx
lea ebp, [esi + 0x20]
push eax
mov ecx, ebp
call fcn.005d80a0
mov ecx, ebx
or ecx, edi
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
mov ecx, ebp
jne 0x5d91ea
push 2
push 0
push 0
call fcn.005d7ba0
sub eax, dword [esp + 0x54]
jmp 0x5d913a
push 0
sub ebx, eax
push 2
sbb edi, edx
push edi
push ebx
call fcn.005d7ba0
push edx
push eax
lea edx, [esp + 0x3c]
push edx
mov ecx, esi
call fcn.005d8580
mov esi, dword [eax]
mov ecx, dword [esp + 0x50]
mov edx, ecx
mov dword [edx], esi
mov esi, dword [eax + 4]
mov dword [edx + 4], esi
mov esi, dword [eax + 8]
pop edi
mov dword [edx + 8], esi
mov eax, dword [eax + 0xc]
pop esi
pop ebp
mov dword [edx + 0xc], eax
mov eax, ecx
pop ebx
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
add esp, 0x3c
ret 0x14
mov ecx, dword [esi + 0x50]
sub eax, edx
mov edx, dword [esi + 0x40]
sar eax, 1
mov edi, eax
mov eax, dword [esi + 0x4c]
push edi
push eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x74]
mov ebp, dword [ecx]
push edx
lea edx, [esp + 0x30]
push edx
call dword [ebp + 0x18]
mov ebp, eax
test ebp, ebp
jl 0x5d93ce
mov eax, dword [esi + 0x50]
push edi
lea ecx, [esp + 0x60]
mov dword [esp + 0x2c], eax
call fcn.005d7ff0
mov edx, dword [esp + 0x5c]
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x20], edx
lea edx, [edx + edi*2]
mov edi, dword [ecx]
mov dword [esp + 0x10], edx
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x64]
push edx
lea edx, [esp + 0x38]
push edx
lea edx, [eax + ebp]
push edx
push eax
lea eax, [esp + 0x40]
push eax
mov dword [esp + 0x64], 0
call dword [edi + 8]
cmp eax, 2
je 0x5d93c1
cmp eax, 3
je 0x5d92f6
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x20], ecx
jne 0x5d93c1
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
mov ecx, dword [esi + 8]
push edx
mov edx, dword [esi + 4]
push eax
push ecx
push edx
call fcn.005d8e40
add esp, 0x10
test al, al
je 0x5d93c1
push 2
push 0
lea edi, [esi + 0x20]
push 0
mov ecx, edi
call fcn.005d7ba0
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x40]
lea ecx, [eax + ebp]
push ecx
push eax
mov ecx, edi
mov dword [esp + 0x1c], edx
call fcn.005d80a0
mov ebp, edx
mov edx, dword [esi + 0x4c]
mov edi, eax
mov eax, dword [esi + 0x40]
push edx
push eax
lea ecx, [esi + 0x20]
call fcn.005d80a0
mov ecx, dword [esp + 0x14]
sub edi, eax
mov eax, dword [esp + 0x10]
sbb ebp, edx
mov edx, eax
and edx, ecx
cmp edx, 0xffffffff
je 0x5d93c1
add edi, eax
adc ebp, ecx
js 0x5d93c1
jg 0x5d9352
test edi, edi
jb 0x5d93c1
or ebx, dword [esp + 0x58]
jne 0x5d936e
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], 0
lea eax, [esp + 0x10]
jmp 0x5d9381
mov eax, dword [esp + 0x24]
push eax
push ebp
push edi
lea ecx, [esp + 0x3c]
push ecx
mov ecx, esi
call fcn.005d8580
mov ecx, dword [eax]
mov esi, dword [esp + 0x50]
mov edx, esi
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x5c]
mov eax, dword [eax + 0xc]
push ecx
mov dword [edx + 0xc], eax
call fcn.00611c89
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
add esp, 0x3c
ret 0x14
mov edx, dword [esp + 0x5c]
push edx
call fcn.00611c89
add esp, 4
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x40]
pop edi
pop esi
pop ebp
mov dword [eax], 0xffffffff
mov dword [eax + 4], 0xffffffff
mov dword [eax + 8], 0
pop ebx
mov dword fs:[0], ecx
add esp, 0x3c
ret 0x14
push 0
push ebp
jmp 0x5d90c2