Function at 0x546b50
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x5c451b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x24
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x20], esi
mov eax, 1
lea ecx, [esp + 0x40]
mov dword [esp + 0x38], eax
mov dword [esp + 0xc], eax
call fcn.00425d10
test eax, eax
jg 0x546b9c
lea ecx, [esp + 0x4c]
call fcn.00425d10
test eax, eax
jle 0x547134
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0xb0]
mov ebp, eax
mov dword [esp + 0x14], ebp
mov edx, dword [ebp + 0x38]
lea ecx, [ebp + 0x38]
call dword [edx + 4]
xor edi, edi
cmp eax, edi
jg 0x546bd5
push 0x5f
push 5
call fcn.0055aa50
add esp, 8
cmp eax, 6
je 0x546bd5
mov dword [esp + 0xc], edi
jmp 0x547134
mov ecx, dword [esp + 0x58]
push edi
call fcn.00585d91
push 0x10
call fcn.00586401
add esp, 4
mov dword [esp + 0x2c], eax
cmp eax, edi
mov byte [esp + 0x38], 2
je 0x546bff
mov ecx, eax
call fcn.00546280
jmp 0x546c01
xor eax, eax
push ebx
lea ecx, [esp + 0x44]
mov byte [esp + 0x3c], 1
mov dword [0x61cfb0], eax
xor ebx, ebx
call fcn.00425d10
test eax, eax
jle 0x546c29
mov eax, dword [ebp]
cmp word [eax + 0x4a], di
jne 0x546c29
mov ebx, 1
lea ecx, [esp + 0x50]
xor esi, esi
call fcn.00425d10
test eax, eax
jle 0x546c57
mov eax, dword [esp + 0x58]
mov eax, dword [eax + edi*4]
mov eax, dword [eax]
cmp word [eax + 0x28], 0xa
jne 0x546c49
inc esi
lea ecx, [esp + 0x50]
inc edi
call fcn.00425d10
cmp edi, eax
jl 0x546c38
lea ecx, [esp + 0x44]
call fcn.00425d10
lea ecx, [esp + 0x50]
mov edi, eax
call fcn.00425d10
mov ecx, dword [0x61cfb0]
add esi, edi
add eax, esi
add eax, ebx
push eax
call fcn.00546340
xor ebx, ebx
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], ebx
call fcn.00425d10
test eax, eax
jle 0x546d59
mov eax, dword [ebp]
cmp word [eax + 0x4a], bx
jne 0x546cd5
movsx ecx, word [eax + 0x48]
mov dword [esp + 0x2c], ecx
push ecx
fild dword [esp + 0x30]
mov ecx, dword [0x61cfb0]
mov dword [esp + 0x18], 1
fld st(0)
fmul st(1)
fmulp st(1)
fld st(0)
fsqrt
fmul dword [0x5d96b4]
fadd st(1)
fstp dword [esp]
push ebx
fstp st(0)
call fcn.005464a0
lea ecx, [esp + 0x44]
call fcn.00425d10
test eax, eax
jle 0x546d59
mov edx, dword [esp + 0x4c]
xor edi, edi
mov dword [esp + 0x2c], edi
mov eax, dword [edx + ebx*4]
movsx ecx, word [eax + 0x28]
dec ecx
js 0x546d16
mov esi, dword [eax + 0x2c]
lea eax, [ecx + ecx*2]
shl eax, 2
lea edx, [ecx + 1]
mov ecx, dword [eax + esi + 8]
sub eax, 0xc
movsx ecx, word [ecx + 0xc]
add edi, ecx
dec edx
jne 0x546d02
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp]
mov esi, eax
inc eax
mov dword [esp + 0x14], eax
call fcn.0044a9e0
mov dword [esp + 0x28], eax
push ecx
fild dword [esp + 0x2c]
mov ecx, dword [0x61cfb0]
fimul dword [esp + 0x30]
fmul dword [0x5d3b28]
fstp dword [esp]
push esi
call fcn.005464a0
lea ecx, [esp + 0x44]
inc ebx
call fcn.00425d10
cmp ebx, eax
jl 0x546ce2
lea ecx, [esp + 0x50]
xor ebp, ebp
call fcn.00425d10
test eax, eax
jle 0x546e88
mov edx, dword [esp + 0x58]
mov eax, dword [edx + ebp*4]
xor edx, edx
mov dword [esp + 0x28], edx
mov esi, dword [eax]
mov eax, dword [esi + 0x1c]
mov cx, word [eax + 0x42]
movsx eax, word [eax + 0x44]
movsx ecx, cx
imul eax, ecx
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x2c], eax
movsx eax, word [ecx + 0x28]
dec eax
js 0x546dba
mov ebx, dword [ecx + 0x2c]
lea ecx, [eax + eax*2]
shl ecx, 2
lea edi, [eax + 1]
mov eax, dword [ecx + ebx + 8]
sub ecx, 0xc
movsx eax, word [eax + 0xc]
add edx, eax
dec edi
jne 0x546da6
mov dword [esp + 0x28], edx
movsx eax, word [esi + 0x28]
sub eax, 8
je 0x546dd6
dec eax
je 0x546dce
fld dword [0x5d1f18]
jmp 0x546ddc
fld dword [0x5d96b0]
jmp 0x546ddc
fld dword [0x5d1f1c]
mov ax, word [esi + 0x2a]
mov dword [esp + 0x20], 0
cmp ax, 1
je 0x546dfc
fild dword [esp + 0x28]
fimul dword [esp + 0x2c]
fmul st(1)
fstp dword [esp + 0x20]
test ax, ax
fstp st(0)
je 0x546e27
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
movsx edx, word [eax + 0x48]
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
fimul dword [esp + 0x2c]
fmul dword [0x5d96ac]
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov eax, edi
inc edi
push ecx
mov ecx, dword [0x61cfb0]
push eax
mov dword [esp + 0x1c], edi
call fcn.005464a0
cmp word [esi + 0x28], 0xa
jne 0x546e76
cmp word [esi + 0x2a], 1
je 0x546e76
fild dword [esp + 0x28]
push ecx
mov ecx, dword [0x61cfb0]
mov eax, edi
inc edi
fimul dword [esp + 0x30]
mov dword [esp + 0x18], edi
fmul dword [0x5d96b0]
fstp dword [esp]
push eax
call fcn.005464a0
lea ecx, [esp + 0x50]
inc ebp
call fcn.00425d10
cmp ebp, eax
jl 0x546d6c
lea ecx, [esp + 0x44]
call fcn.00425d10
test eax, eax
jle 0x546fdb
mov edx, dword [esp + 0x18]
xor ebx, ebx
mov ebp, dword [edx]
mov ax, word [ebp + 0x4a]
cmp ax, bx
jne 0x546f1e
mov ecx, dword [0x61cfb0]
push 0x2cd
call fcn.005463a0
mov ecx, dword [0x61cfb0]
push 0x61cf80
call fcn.005463c0
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
push 0x5464d0
call fcn.0044c130
test ax, ax
je 0x546eef
mov ecx, dword [esp + 0x24]
push 1
mov ecx, dword [ecx]
mov edx, dword [ecx]
call dword [edx + 0x5c]
jmp 0x546f1e
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
sub eax, 3
je 0x546f1e
dec eax
je 0x546f0d
push 0x4d
push 3
call fcn.0055aa50
add esp, 8
jmp 0x546f1e
push 0x61cf80
push 0x4c
push 3
call fcn.0055aa50
add esp, 0xc
cmp dword [esp + 0x10], ebx
je 0x546fdb
lea ecx, [esp + 0x44]
call fcn.00425d10
cmp ebx, eax
jge 0x546fdb
mov eax, dword [esp + 0x4c]
mov ecx, dword [0x61cfb0]
push 0x2ce
mov esi, dword [eax + ebx*4]
call fcn.005463a0
mov ecx, dword [0x61cfb0]
push esi
call fcn.005463c0
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push eax
push 0x5464d0
mov edx, dword [ecx + 4]
mov di, word [edx]
call fcn.00443ec0
push ecx
mov ecx, ebp
fstp dword [esp]
push edi
push esi
call fcn.0044b710
test ax, ax
je 0x546f96
mov ecx, dword [esp + 0x24]
push 1
mov ecx, dword [ecx]
mov edx, dword [ecx]
call dword [edx + 0x5c]
jmp case.0x546fa8.3
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], 0
dec eax
cmp eax, 3
ja case.default.0x546fa8
jmp dword [eax*4 + 0x54717c]
push esi
push 0x4a
jmp 0x546fc4
push esi
push 0x4b
jmp 0x546fc4
push esi
push 0x4c
jmp 0x546fc4
push esi
push 0xe3
push 3
call fcn.0055aa50
add esp, 0xc
mov eax, dword [esp + 0x10]
inc ebx
test eax, eax
jne 0x546f28
mov eax, dword [esp + 0x10]
xor esi, esi
test eax, eax
mov dword [esp + 0x2c], esi
je 0x5470f2
jmp 0x546ff3
mov esi, dword [esp + 0x2c]
lea ecx, [esp + 0x50]
call fcn.00425d10
cmp esi, eax
jge 0x5470f2
mov ecx, dword [esp + 0x58]
push 0x792
mov edi, dword [ecx + esi*4]
mov ecx, dword [0x61cfb0]
mov esi, dword [edi]
call fcn.005463a0
mov ecx, dword [0x61cfb0]
push esi
call fcn.005463c0
mov edx, dword [esp + 0x18]
mov ecx, edx
mov eax, dword [edx + 4]
lea edx, [ecx + 0x104]
movsx ebp, word [eax + 4]
mov bx, word [eax]
lea eax, [esp + 0x1c]
push eax
push 0x5464f0
push 0x5464d0
push edx
call fcn.00443ec0
push ecx
mov ecx, edi
fstp dword [esp]
push ebp
push ebx
call fcn.004153e0
test ax, ax
je 0x547075
mov eax, dword [esp + 0x24]
push 1
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 0x5c]
jmp case.0x547087.3
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], 0
dec eax
cmp eax, 0xa
ja case.0x547087.4
jmp dword [eax*4 + 0x54718c]
push esi
push 0x63
jmp 0x5470d3
push esi
push 0x64
jmp 0x5470d3
push esi
push 0x84
jmp 0x5470d3
push esi
push 0x85
jmp 0x5470d3
push esi
push 0x89
jmp 0x5470d3
push esi
push 0x8d
jmp 0x5470d3
push esi
push 0xec
jmp 0x5470d3
push esi
push 0x91
jmp 0x5470d3
push esi
push 0x115
jmp 0x5470d3
push esi
push 0x65
push 3
call fcn.0055aa50
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
inc ecx
test eax, eax
mov dword [esp + 0x2c], ecx
jne 0x546fef
mov ecx, dword [esp + 0x5c]
push 1
call fcn.00585d91
mov ecx, dword [0x61cfb0]
call fcn.005464c0
mov ecx, dword [0x61cfb0]
pop ebx
test ecx, ecx
mov esi, ecx
je 0x547123
call fcn.00546310
push esi
call fcn.0058642a
add esp, 4
mov ecx, dword [esp + 0x20]
push 0
push 0
push 0
mov ecx, dword [ecx]
call fcn.0058c2e3
lea ecx, [esp + 0x40]
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0x5cb60c
call fcn.00425a10
lea ecx, [esp + 0x4c]
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x4c], 0x5cb5e8
call fcn.00425a10
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0xc]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0x30
ret 0x1c