Function at 0x415a20
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x462da0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
mov eax, dword [0x4800bc]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x30], 0
mov ecx, esi
call fcn.0044266e
mov edi, dword [esi + 0xc]
mov ebx, dword [esi + 8]
add esi, 4
cmp edi, edi
mov ebp, edi
je 0x415a7d
push ebp
mov ecx, ebx
call fcn.0044281c
add ebp, 4
add ebx, 4
cmp ebp, edi
jne 0x415a6b
mov ebp, dword [esi + 8]
mov edi, ebx
cmp ebx, ebp
je 0x415a96
push 0
mov ecx, edi
call fcn.00417c40
add edi, 4
cmp edi, ebp
jne 0x415a86
mov dword [esi + 8], ebx
mov ebx, dword [esp + 0x38]
push 0
push 0x2c
mov ecx, ebx
call fcn.00442bca
mov edi, eax
or ebp, 0xffffffff
cmp edi, ebp
jne 0x415ac9
mov ecx, dword [ebx]
mov eax, dword [ecx - 8]
test eax, eax
je 0x415b0d
mov ecx, dword [esp + 0x3c]
push ebx
call fcn.0044281c
jmp 0x415de3
lea edx, [esp + 0x18]
push edi
push edx
mov ecx, ebx
call fcn.0043fb89
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 1
call fcn.0044281c
lea ecx, [esp + 0x18]
mov byte [esp + 0x30], 0
call fcn.004426e3
push 0x22
lea ecx, [esp + 0x14]
call fcn.00442bbc
cmp eax, ebp
je 0x415b21
mov eax, dword [esp + 0x14]
mov dword [eax + 0x34], 5
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], ebp
call fcn.004426e3
xor eax, eax
jmp 0x415df5
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x40]
call fcn.0044281c
lea ecx, [esp + 0x10]
inc edi
call fcn.0044266e
mov edx, dword [ebx]
cmp edi, dword [edx - 8]
jg 0x415de3
push edi
push 0x2c
mov ecx, ebx
call fcn.00442bca
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x24], ebp
jle 0x415d74
sub eax, edi
lea ecx, [esp + 0x3c]
push eax
push edi
push ecx
mov ecx, ebx
call fcn.0043fa77
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 4
call fcn.00442afb
lea ecx, [esp + 0x3c]
mov byte [esp + 0x30], 0
call fcn.004426e3
xor edi, edi
lea ecx, [esp + 0x10]
push edi
push 0x22
call fcn.00442bca
cmp eax, 0xffffffff
je 0x415baf
inc eax
lea ecx, [esp + 0x10]
push eax
push 0x22
call fcn.00442bca
inc edi
cmp eax, 0xffffffff
jne 0x415b9c
and edi, 0x80000001
jns 0x415bbc
dec edi
or edi, 0xfffffffe
inc edi
test edi, edi
jle 0x415bd3
push 0x2c
lea ecx, [esp + 0x14]
call fcn.00442ae6
lea edi, [ebp + 1]
jmp 0x415d67
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.00415280
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 5
call fcn.0044281c
lea ecx, [esp + 0x18]
mov byte [esp + 0x30], 0
call fcn.004426e3
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
sub ecx, eax
mov edi, eax
sar ecx, 2
cmp ecx, 1
jae 0x415cde
mov edx, dword [esi + 4]
test edx, edx
je 0x415c2c
mov ecx, eax
sub ecx, edx
sar ecx, 2
cmp ecx, 1
ja 0x415c31
mov ecx, 1
test edx, edx
jne 0x415c39
xor eax, eax
jmp 0x415c3e
sub eax, edx
sar eax, 2
add eax, ecx
test eax, eax
mov dword [esp + 0x20], eax
jge 0x415c4a
xor eax, eax
lea edx, [eax*4]
push edx
call fcn.00442424
mov ebx, dword [esi + 4]
add esp, 4
cmp ebx, edi
mov dword [esp + 0x1c], eax
mov ebp, eax
je 0x415c7b
push ebx
push ebp
call fcn.00417b00
add ebx, 4
add esp, 8
add ebp, 4
cmp ebx, edi
jne 0x415c67
lea eax, [esp + 0x10]
mov ecx, esi
push eax
push 1
push ebp
call fcn.00417660
mov ecx, dword [esi + 8]
add ebp, 4
push ebp
push ecx
push edi
mov ecx, esi
call fcn.00416820
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
push edx
push eax
mov ecx, esi
call fcn.004167f0
mov eax, dword [esi + 4]
push eax
call fcn.0044244d
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add esp, 4
lea edx, [edi + ecx*4]
mov ecx, esi
mov dword [esi + 0xc], edx
call fcn.00416720
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x24]
lea eax, [edi + eax*4 + 4]
mov dword [esi + 4], edi
mov dword [esi + 8], eax
jmp 0x415d5b
mov ecx, eax
sub ecx, edi
sar ecx, 2
cmp ecx, 1
jae 0x415d2a
lea edx, [edi + 4]
mov ecx, esi
push edx
push eax
push edi
call fcn.00416820
mov eax, dword [esi + 8]
lea ecx, [esp + 0x10]
mov edx, eax
push ecx
sub edx, edi
mov ecx, 1
sar edx, 2
sub ecx, edx
push ecx
push eax
mov ecx, esi
call fcn.00417660
mov eax, dword [esi + 8]
lea edx, [esp + 0x10]
push edx
push eax
push edi
call fcn.00417a90
add esp, 0xc
jmp 0x415d57
push eax
push eax
add eax, 0xfffffffc
mov ecx, esi
push eax
call fcn.00416820
mov eax, dword [esi + 8]
push eax
add eax, 0xfffffffc
push eax
push edi
call fcn.00417ac0
lea ecx, [esp + 0x1c]
lea edx, [edi + 4]
push ecx
push edx
push edi
call fcn.00417a90
add esp, 0x18
add dword [esi + 8], 4
lea ecx, [esp + 0x10]
lea edi, [ebp + 1]
call fcn.0044266e
mov eax, dword [ebx]
cmp edi, dword [eax - 8]
jle 0x415b44
jmp 0x415de0
lea ecx, [esp + 0x3c]
push edi
push ecx
mov ecx, ebx
call fcn.0043fa54
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 2
call fcn.00442afb
lea ecx, [esp + 0x3c]
mov byte [esp + 0x30], 0
call fcn.004426e3
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
call fcn.00415280
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 3
call fcn.0044281c
lea ecx, [esp + 0x3c]
mov byte [esp + 0x30], 0
call fcn.004426e3
mov eax, dword [esi + 8]
lea ecx, [esp + 0x10]
push ecx
push 1
push eax
mov ecx, esi
call fcn.00416a10
or ebp, 0xffffffff
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], ebp
call fcn.004426e3
mov eax, 1
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x24
ret 8