Function at 0x546556
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x100
mov dword [esp + 0x50], ecx
mov ecx, edx
mov esi, edx
call fcn.00546500
xor ebx, ebx
test edx, edx
setne cl
jne 0x546cd8
mov bl, cl
mov edx, 0x9f32d4
mov dword [esp + 0x60], eax
mov ecx, ebx
call fcn.00523708
mov edi, dword [esp + 0x60]
test edi, edi
js 0x546cd8
mov ecx, ebx
mov edx, 0x9f32e4
call fcn.00523708
xor edx, edx
mov ecx, edi
inc edx
call fcn.00567657
movsd xmm1, qword [esi + 0x10]
movsd xmm0, qword [esi + 0x18]
movsd xmm2, qword [esi]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x5c], edx
and dword [esp + 0x34], 0
and dword [esp + 0x30], 0
and dword [esp + 0x3c], 0
mov dword [esp + 0x38], edi
movsd qword [esp + 0xc8], xmm1
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0xd0], xmm0
movsd qword [esp + 0xb8], xmm2
movsd qword [esp + 0xc0], xmm1
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0xc8]
mov dword [esp + 4], ecx
lea ecx, [ecx*4]
shl eax, 2
mul ecx
xor ecx, ecx
mov dword [esp + 0xc], eax
mov al, byte [esp + 0xd4]
mov esi, edx
test al, al
mov byte [esp + 8], al
sete cl
xor ecx, 3
call fcn.0052372c
movzx ebx, al
mov eax, esi
mul ebx
mov ecx, eax
mov eax, dword [esp + 0xc]
seto byte [esp + 0x10]
mul ebx
add edx, ecx
setb cl
or cl, byte [esp + 0x10]
xor esi, esi
dec esi
test cl, cl
cmovne edx, esi
cmovne eax, esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
and dword [esp + 0x1c], 0
and dword [esp + 0x18], 0
xor eax, edi
or eax, edx
jne 0x546dab
xor eax, eax
cmp byte [esp + 8], 0
mov ebx, edi
mov edi, dword [esp + 0x4c]
lea esi, [esp + 0x70]
mov ecx, esi
setne al
mov edx, edi
shl eax, 4
add eax, 0x30
imul eax, dword [esp + 4]
push 0x9ee028
push eax
push ebx
call fcn.0047225f
add esp, 0xc
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x68], ecx
test eax, eax
je 0x546cea
mov ecx, dword [esp + 0x68]
cmp eax, ecx
cmovb ecx, eax
cmp dword [esp + 0x10], 0
je 0x546cea
mov bl, byte [esp + 0xd4]
and dword [esp + 0x34], 0
and dword [esp + 0x30], 0
and dword [esp + 0x3c], 0
mov dword [esp + 0x44], eax
test bl, bl
push 0x40
pop eax
mov esi, ecx
push 0x30
pop ecx
cmove eax, ecx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xc], esi
mov dword [esp + 0x38], esi
mul ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
and dword [esp + 0x1c], 0
and dword [esp + 0x18], 0
xor eax, esi
or eax, edx
jne 0x546d40
xor eax, eax
test bl, bl
setne al
lea esi, [eax*8 + 8]
imul esi, ecx
xor edx, edx
mov ecx, esi
inc edx
call fcn.00567657
mov dword [esp + 0x40], edx
mov dword [esp + 4], esi
push esi
mov dword [esp + 0x4c], eax
push eax
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.004b3b1b
add esp, 0x10
cmp byte [esp + 0x70], 4
je 0x54678b
mov ebx, dword [esp + 0x70]
cmp bl, 4
jne 0x54690a
movzx eax, byte [esp + 0xd4]
test eax, eax
je 0x54692d
mov ebx, dword [esp + 4]
cmp eax, 1
jne 0x546a23
mov ecx, dword [esp + 0xc]
test bl, 8
jne 0x546d60
mov edx, ebx
shr edx, 4
mov eax, edx
shl eax, 6
cmp eax, ecx
ja 0x546d6f
mov eax, dword [esp + 0x48]
xorps xmm0, xmm0
shl edx, 4
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], 0x10
and dword [esp + 0x24], 0
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
call fcn.005240f8
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x546c44
cmp dword [esp + 0x38], 0x10
jne 0x546d0d
mov eax, dword [esp + 0x30]
lea edi, [ecx + 8]
xor edx, edx
mov dword [esp + 8], edi
mov dword [esp + 4], eax
push 8
pop edi
xor esi, esi
test edi, edi
je 0x546856
movzx eax, byte [ecx + edi - 1]
shld esi, edx, 8
shl edx, 8
dec edi
or edx, eax
jmp 0x546841
xor ebx, ebx
cmp ebx, 0x40
je 0x546887
mov ecx, ebx
mov edi, edx
mov eax, esi
and cl, 0x3c
shrd edi, esi, cl
mov ecx, ebx
and cl, 0x1c
shr eax, cl
test bl, 0x20
cmove eax, edi
and al, 0xf
movzx eax, al
imul eax, eax, 0x11
mov byte [esp + ebx + 0x73], al
add ebx, 4
jmp 0x546858
mov ecx, dword [esp + 8]
lea edx, [esp + 0x70]
push 0
push 0x40
call fcn.00524125
pop eax
pop ecx
mov ebx, dword [esp + 4]
xor edi, edi
shl ebx, 4
cmp edi, 0x40
je 0x546901
lea edx, [ebx + 0x10]
mov ecx, ebx
push 0x9ee240
push dword [esp + 0x10]
push dword [esp + 0x18]
call fcn.004b2d6a
add esp, 0xc
mov dword [esp + 8], edx
mov dword [esp + 4], eax
lea esi, [edi + 0x10]
lea ecx, [esp + 0x70]
mov edx, edi
push 0x9ee250
push esi
call fcn.005242af
pop ecx
pop ecx
mov edi, edx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
push 0x9ee260
push edi
push eax
call fcn.0056c11f
add esp, 0xc
add ebx, dword [esp + 0x2c]
mov edi, esi
jmp 0x5468a3
mov edi, dword [esp + 0x4c]
jmp 0x546807
mov ecx, dword [esp + 0x74]
mov eax, ebx
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
shrd eax, ecx, 8
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x64], eax
jmp 0x546c5d
mov edx, dword [esp + 4]
mov eax, edx
shr eax, 3
imul ecx, eax, 0x30
cmp ecx, dword [esp + 0xc]
ja 0x546d7e
mov ecx, dword [esp + 0x48]
xorps xmm0, xmm0
imul eax, eax, 0xc
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], 8
and dword [esp + 0x24], 0
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
call fcn.005240f8
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x546c44
cmp dword [esp + 0x38], 8
jne 0x546d1c
mov esi, dword [esp + 0x30]
lea edx, [esp + 0x70]
push 1
push 0x30
call fcn.00524125
pop eax
pop ecx
imul esi, esi, 0xc
xor edi, edi
cmp edi, 0x30
je 0x546a1a
lea edx, [esi + 0xc]
mov ecx, esi
push 0x9ee198
push dword [esp + 0x10]
push dword [esp + 0x18]
call fcn.004b2d6a
add esp, 0xc
lea ebx, [edi + 0xc]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov ecx, edi
mov edx, ebx
push 0x9ee1a8
push 0x30
lea eax, [esp + 0x78]
push eax
call fcn.004b2d6a
add esp, 0xc
mov edi, edx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
push 0x9ee1b8
push edi
push eax
call fcn.0056c11f
add esp, 0xc
add esi, dword [esp + 0x2c]
mov edi, ebx
jmp 0x5469b7
mov edi, dword [esp + 0x4c]
jmp 0x54697b
mov ecx, dword [esp + 0xc]
test bl, 8
jne 0x546d8d
mov edx, ebx
shr edx, 4
mov eax, edx
shl eax, 6
cmp eax, ecx
ja 0x546d9c
mov eax, dword [esp + 0x48]
xorps xmm0, xmm0
shl edx, 4
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], 0x10
and dword [esp + 0x24], 0
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
call fcn.005240f8
mov eax, dword [esp + 0x34]
test eax, eax
mov dword [esp + 4], eax
je 0x546c44
cmp dword [esp + 0x38], 0x10
jne 0x546d2b
mov eax, dword [esp + 0x30]
xor edi, edi
mov dword [esp + 0x6c], eax
push 6
pop ecx
xor ebx, ebx
mov eax, ecx
sub eax, 1
jb 0x546ad6
mov edx, dword [esp + 4]
shld ebx, edi, 8
shl edi, 8
movzx ecx, byte [edx + ecx + 1]
or edi, ecx
mov ecx, eax
jmp 0x546abb
mov eax, dword [esp + 4]
lea esi, [esp + 0x56]
mov dword [esp + 8], ebx
mov cl, byte [eax]
mov dl, byte [eax + 1]
mov byte [esp + 0x54], cl
mov byte [esp + 0x55], dl
and dword [esi], 0
movzx eax, cl
cmp cl, dl
mov byte [esi + 4], 0
mov byte [esp + 0x5b], 0xff
mov dword [esp + 0x14], eax
movzx eax, dl
jbe 0x546b3e
mov ecx, dword [esp + 0x14]
mov edx, eax
imul eax, ecx, 6
add eax, edx
sub edx, ecx
push 0xfffffffffffffffa
pop esi
mov ecx, edx
test esi, esi
je 0x546b75
xor edx, edx
mov bx, 7
mov dword [esp + 0x14], eax
div bx
mov ebx, dword [esp + 8]
mov byte [esp + esi + 0x5c], al
movsx eax, cx
inc esi
add eax, dword [esp + 0x14]
jmp 0x546b1b
movzx edx, word [esp + 0x14]
movzx eax, ax
lea ecx, [eax + edx*4]
sub eax, edx
mov dword [esp + 0x14], eax
push 0xfffffffffffffffc
pop esi
test esi, esi
je 0x546b75
mov eax, ecx
xor edx, edx
mov bx, 5
div bx
mov ebx, dword [esp + 8]
mov byte [esp + esi + 0x5a], al
movsx eax, word [esp + 0x14]
inc esi
add eax, ecx
mov ecx, eax
jmp 0x546b52
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
add dword [esp + 4], 8
mov dword [esp + 0xdc], ecx
xor ecx, ecx
mov dword [esp + 0xd8], eax
push 0xffffffffffffffc0
pop eax
test eax, eax
je 0x546bc1
mov edx, edi
mov esi, ebx
shrd edx, ebx, cl
shr esi, cl
test cl, 0x20
cmove esi, edx
add ecx, 3
and esi, 7
mov dl, byte [esp + esi + 0xd8]
mov byte [esp + eax + 0xb3], dl
add eax, 4
jmp 0x546b95
mov ecx, dword [esp + 4]
lea edx, [esp + 0x70]
push 0
push 0x40
call fcn.00524125
pop eax
pop ecx
mov ebx, dword [esp + 0x6c]
xor esi, esi
shl ebx, 4
cmp esi, 0x40
je 0x546c3b
lea edx, [ebx + 0x10]
mov ecx, ebx
push 0x9ee290
push dword [esp + 0x10]
push dword [esp + 0x18]
call fcn.004b2d6a
add esp, 0xc
mov dword [esp + 8], edx
mov dword [esp + 4], eax
lea edi, [esi + 0x10]
lea ecx, [esp + 0x70]
mov edx, esi
push 0x9ee2a0
push edi
call fcn.005242af
pop ecx
pop ecx
mov esi, edx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
push 0x9ee2b0
push esi
push eax
call fcn.0056c11f
add esp, 0xc
add ebx, dword [esp + 0x2c]
mov esi, edi
jmp 0x546bdd
mov edi, dword [esp + 0x4c]
jmp 0x546a82
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
inc dword [esp + 0xd0]
mov bl, 4
mov dword [esp + 4], ecx
add dword [esp + 0x10], ecx
sub esi, ecx
mov ecx, dword [esp + 0x48]
call fcn.0043cca3
mov eax, esi
cmp bl, 4
je 0x5466c9
mov ecx, dword [esp + 0x64]
movzx eax, bl
mov edx, dword [esp + 4]
movsd xmm1, qword [esp + 0xe8]
movsd xmm0, qword [esp + 0xe0]
shl ecx, 8
or eax, ecx
mov ecx, dword [esp + 0x50]
mov dword [ecx + 8], edx
mov dword [ecx + 4], eax
movsd qword [ecx + 0x14], xmm1
movsd xmm1, qword [esp + 0xf0]
mov eax, dword [esp + 0xf8]
mov edx, dword [esp + 0x5c]
movsd qword [ecx + 0xc], xmm0
movsd qword [ecx + 0x1c], xmm1
mov dword [ecx + 0x24], eax
mov dword [ecx], 5
mov ecx, edi
call fcn.0043cca3
jmp 0x546d05
push 3
pop eax
mov ecx, dword [esp + 0x50]
mov dword [ecx], eax
and dword [ecx + 0xc], 0
mov dword [ecx + 8], eax
jmp 0x546d05
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov dword [eax], 6
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x38
pop edx
mov ecx, str.assertion_failed:_source.len____16__dest.len____64
push 0x9ee100
jmp 0x546d38
push 0x37
pop edx
mov ecx, str.assertion_failed:_source.len____8__dest.len____48
push 0x9ee148
jmp 0x546d38
push 0x38
pop edx
mov ecx, str.assertion_failed:_source.len____16__dest.len____64
push 0x9ee0f0
call fcn.0063cd70
pop eax
ud2
and dword [esp + 0x70], 0
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
push 0x9ee008
lea eax, [esp + 0x74]
push eax
call fcn.0063fd00
pop eax
pop ecx
ud2
push 0x28
pop edx
mov ecx, str.assertion_failed:_source.len_____16__0
push 0x9ee1f0
jmp 0x546d38
push 0x30
pop edx
mov ecx, str.assertion_failed:_dest.len_____block_count__64
push 0x9ee230
jmp 0x546d38
push 0x30
pop edx
mov ecx, str.assertion_failed:_dest.len_____block_count__48
push 0x9ee188
jmp 0x546d38
push 0x28
pop edx
mov ecx, str.assertion_failed:_source.len_____16__0
push 0x9ee270
jmp 0x546d38
push 0x30
pop edx
mov ecx, str.assertion_failed:_dest.len_____block_count__64
push 0x9ee280
jmp 0x546d38
lea eax, [esp + 0x70]
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
and dword [eax], 0
push 0x9ee018
jmp 0x546d56