Function at 0x54907c
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
push esi
push edi
mov esi, ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x549535
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x5490bb
mov eax, dword [ebp - 4]
test byte [eax + 0x3c1], 1
je 0x54938a
mov byte [ebp - 5], 0
test bl, bl
je 0x5490d1
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.0055a53c
test al, al
jne 0x5490d5
xor eax, eax
jmp 0x5490d7
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.00544664
xor eax, eax
push ebp
push 0x549383
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
mov edx, dword [eax]
call dword [edx + 0x38]
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
setle al
or al, byte [ebp + 0xc]
je 0x549142
test esi, esi
jle 0x54912c
mov eax, dword [ebp - 4]
call fcn.005488ac
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x549142
test esi, esi
jge 0x549142
mov eax, dword [ebp - 4]
call fcn.005488ac
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x549343
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x54931f
mov eax, dword [ebp - 4]
test byte [eax + 0x3c1], 0x10
je 0x549291
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
cmp byte [eax + 0x15], 0
je 0x549291
test bl, bl
je 0x549289
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3cd], 0
jne 0x549213
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
call fcn.005143e0
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x3d4
call fcn.0040450c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
call fcn.005142d8
mov edx, dword [ebp - 4]
mov byte [edx + 0x4f6], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x44e], 0
je 0x5491f3
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x4f6]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x549203
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov byte [eax + 0x3cd], 1
mov byte [ebp - 5], 1
jmp 0x549291
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dword [ebp - 0xc], eax
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.005143e0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x3d4]
mov eax, dword [ebp - 0xc]
call fcn.00514448
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, esi
pop edx
mov edi, edx
cdq
idiv edi
neg eax
cmp ecx, eax
setne byte [ebp - 5]
cmp byte [ebp - 5], 0
jne 0x549291
mov eax, dword [ebp - 4]
cmp byte [eax + 0x44e], 0
je 0x54927d
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x4f6]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x549291
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x549291
mov eax, dword [ebp - 4]
call fcn.00549020
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.004c9018
push eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, esi
pop edx
mov ecx, edx
cdq
idiv ecx
mov edx, eax
pop eax
call fcn.004cdc28
test eax, eax
jne 0x5492cb
call fcn.00403f00
call fcn.00403f00
jmp 0x54951a
cmp byte [ebp - 5], 0
je 0x549309
mov eax, dword [ebp - 4]
cmp byte [eax + 0x44e], 0
je 0x5492f9
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x4f6]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x549309
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp byte [ebp + 0xc], 0
jne 0x549317
test esi, esi
jle 0x549316
dec esi
jmp 0x549317
inc esi
test esi, esi
jne 0x549158
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x54934a
cmp byte [ebp - 6], 0
je 0x549342
mov eax, dword [ebp - 4]
call fcn.005488ac
mov eax, dword [eax + 0x30]
call fcn.004cd024
ret
test bl, bl
je 0x54939c
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.0055a53c
test al, al
jne 0x5493a0
xor eax, eax
jmp 0x5493a2
mov al, 1
mov ebx, eax
test bl, bl
jne 0x5493c2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.004c9018
mov edx, esi
call fcn.004cdc28
jmp 0x549503
mov eax, dword [ebp - 4]
call fcn.00544664
xor edx, edx
push ebp
push 0x5494fc
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
cmp byte [eax + 0x10], 2
je 0x549435
mov eax, dword [eax + 0xc]
call fcn.0055c8cc
push 1
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 4]
call fcn.00559d3c
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.005445fc
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0055ce08
cmp byte [ebp + 0xc], 0
je 0x549468
dec esi
jne 0x549453
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.004c9018
call fcn.004cdb8c
jmp 0x54947d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.004c9018
call fcn.004cdab4
jmp 0x54947d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.004c9018
mov edx, esi
call fcn.004cdc28
push 1
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 4]
call fcn.00559d3c
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.005445fc
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0055ce08
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x549503
mov eax, dword [ebp - 4]
call fcn.0054889c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x408], 0
jne 0x5494fb
mov eax, dword [ebp - 4]
cmp byte [eax + 0x43d], 0
je 0x5494fb
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x158]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x408], 0
jne 0x54951a
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x88]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x54953c
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.004044dc
ret