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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x60]
mov dword [esp + 0x14], ecx
mov ecx, dword [ecx]
mov ebp, dword [eax]
mov edi, dword [ebp + 4]
add ebp, dword [ebp + 0xc]
cmp dword [ecx], 0xe
ja case.default.0x546930
mov eax, dword [ecx]
jmp dword [eax*4 + 0x7421b4]
mov esi, dword [ecx + 0x20]
lea ebx, [ecx + 8]
mov eax, edi
cdq
mov dword [esp + 0x2c], 0
mov dword [esp + 0x1c], ebx
mov ebx, edi
and esi, 0x3f
add ebx, dword [ecx + 0x20]
mov dword [esp + 0x18], esi
mov esi, edx
adc esi, dword [ecx + 0x24]
mov dword [ecx + 0x20], ebx
mov ebx, dword [esp + 0x1c]
mov dword [ecx + 0x24], esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x28], esi
add eax, dword [esp + 0x28]
lea ebx, [ebx + esi + 0x20]
adc edx, dword [esp + 0x2c]
cmp edx, 0
ja 0x546ea0
cmp eax, 0x3f
ja 0x546ea0
mov dword [esp + 8], edi
mov dword [esp + 4], ebp
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
add ecx, 0x1a8
call fcn.004a6490
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret 4
lea eax, [ecx + 8]
mov ecx, edi
mov edx, edi
sar ecx, 0x1f
shl edx, 3
shld ecx, edi, 3
mov dword [esp], edx
mov edx, ebp
mov dword [esp + 4], ecx
call fcn.0049cd10
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
jmp case.default.0x546930
test ebp, ebp
je case.default.0x546930
test edi, edi
je case.default.0x546930
mov eax, dword [ecx + 0xdc]
test eax, eax
jne 0x547120
mov eax, dword [ecx + 0xe0]
test eax, eax
jne case.default.0x546930
lea eax, [ebp + edi]
mov ebx, ecx
mov dword [esp + 0x18], eax
lea eax, [ecx + 8]
mov dword [esp + 0x1c], eax
jmp 0x546a54
ja 0x546a29
cmp esi, eax
jbe 0x546a81
mov eax, dword [ebx + 0x48]
mov edx, dword [ebx + 0x4c]
add eax, 1
adc edx, 0
mov dword [ebx + 0x48], eax
mov edi, edx
mov dword [ebx + 0x4c], edx
or edi, eax
jne 0x546a81
mov dword [ebx + 0xe0], 2
add ebp, 1
cmp ebp, dword [esp + 0x18]
je 0x5469e0
movsx eax, word [ebx + 0x58]
movzx edx, byte [ebp]
lea ecx, [eax + 1]
mov word [ebx + 0x58], cx
mov byte [ebx + eax + 0x5a], dl
mov esi, dword [ebx + 0x50]
mov edi, dword [ebx + 0x54]
mov eax, esi
mov edx, edi
add eax, 8
adc edx, 0
mov dword [ebx + 0x50], eax
cmp edi, edx
mov dword [ebx + 0x54], edx
jae 0x546a23
mov esi, dword [ebx + 0xe0]
test esi, esi
jne 0x546a4b
add cx, 0xff80
jne 0x546a4b
mov eax, dword [esp + 0x1c]
call fcn.0048e7b0
jmp 0x546a4b
lea eax, [ecx + 8]
mov esi, dword [ecx + 0xc]
mov ebx, edi
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 8]
lea edx, [edi + eax]
and edx, 0x1fffffff
cmp edx, eax
mov dword [ecx + 8], edx
mov edx, edi
adc esi, 0
shr edx, 0x1d
add esi, edx
and eax, 0x3f
mov dword [ecx + 0xc], esi
lea esi, [ecx + 0x20]
je 0x546b1d
mov edx, 0x40
lea ebx, [ecx + 8]
sub edx, eax
cmp edi, edx
lea eax, [ebx + eax + 0x18]
jb 0x546e80
cmp edx, 4
jae 0x547150
test edx, edx
je 0x546b04
movzx ebx, byte [ebp]
test dl, 2
mov byte [eax], bl
jne 0x5471be
lea esi, [ecx + 0x20]
mov eax, dword [esp + 0x18]
sub edi, edx
add ebp, edx
mov ecx, 0x40
mov ebx, edi
mov edx, esi
call fcn.0049ba20
cmp ebx, 0x3f
ja 0x547020
cmp ebx, 4
jb 0x546ff0
mov eax, dword [ebp]
lea edx, [esi + 4]
and edx, 0xfffffffc
mov dword [esi], eax
mov eax, dword [ebp + ebx - 4]
mov dword [esi + ebx - 4], eax
sub esi, edx
add ebx, esi
sub ebp, esi
and ebx, 0xfffffffc
cmp ebx, 4
jb 0x5469e0
and ebx, 0xfffffffc
xor eax, eax
mov ecx, dword [ebp + eax]
mov dword [edx + eax], ecx
add eax, 4
cmp eax, ebx
jb 0x546b59
jmp 0x5469e0
mov eax, dword [ecx + 0x18]
mov edx, edi
add edx, eax
mov dword [ecx + 0x18], edx
jae 0x546b80
add dword [ecx + 0x1c], 1
and eax, 0x3f
mov esi, 0x40
lea ebx, [ecx + 0x20]
sub esi, eax
lea edx, [ecx + 8]
add eax, ebx
cmp edi, esi
mov dword [esp + 0x18], edx
jb 0x546e80
cmp esi, 4
jae 0x547080
test esi, esi
je 0x546bbd
movzx edx, byte [ebp]
test esi, 2
mov byte [eax], dl
jne 0x5471af
mov eax, dword [esp + 0x18]
sub edi, esi
mov edx, ebx
add ebp, esi
mov esi, edi
call fcn.004799d0
cmp edi, 0x3f
jbe 0x546c68
lea eax, [edi - 0x40]
mov dword [esp + 0x1c], esi
mov esi, ebx
mov ebx, dword [esp + 0x18]
and eax, 0xffffffc0
lea edi, [ebp + eax + 0x40]
nop
lea esi, [esi]
mov eax, dword [ebp]
mov edx, esi
add ebp, 0x40
mov dword [esi], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x38]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x34]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x30]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0x2c]
mov dword [esi + 0x14], eax
mov eax, dword [ebp - 0x28]
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x34], eax
mov eax, dword [ebp - 8]
mov dword [esi + 0x38], eax
mov eax, dword [ebp - 4]
mov dword [esi + 0x3c], eax
mov eax, ebx
call fcn.004799d0
cmp ebp, edi
jne 0x546bf0
mov ebx, esi
mov esi, dword [esp + 0x1c]
and esi, 0x3f
cmp esi, 4
jae 0x547040
test esi, esi
je 0x5469e0
movzx eax, byte [ebp]
test esi, 2
mov byte [ebx], al
je 0x5469e0
movzx eax, word [ebp + esi - 2]
mov word [ebx + esi - 2], ax
jmp 0x5469e0
test ebp, ebp
je case.default.0x546930
test edi, edi
je case.default.0x546930
mov ebx, dword [ecx + 0x74]
test ebx, ebx
jne 0x547135
mov edx, dword [ecx + 0x78]
test edx, edx
jne case.default.0x546930
add edi, ebp
mov ebx, ecx
jmp 0x546ce8
add dword [ebx + 0x28], 1
jne 0x546d10
mov dword [ebx + 0x78], 2
add ebp, 1
cmp ebp, edi
je 0x5469e0
movsx eax, word [ebx + 0x30]
movzx ecx, byte [ebp]
lea edx, [eax + 1]
mov word [ebx + 0x30], dx
mov byte [ebx + eax + 0x32], cl
xor ecx, ecx
mov eax, dword [ebx + 0x2c]
add eax, 8
jb 0x5471d7
test ecx, ecx
mov dword [ebx + 0x2c], eax
jne 0x546cd0
mov eax, dword [ebx + 0x78]
test eax, eax
jne 0x546cdd
cmp dx, 0x40
jne 0x546cdd
lea eax, [ebx + 8]
call fcn.0048e240
jmp 0x546cdd
test ebp, ebp
je case.default.0x546930
test edi, edi
je case.default.0x546930
mov eax, dword [ecx + 0xdc]
test eax, eax
jne 0x547120
mov eax, dword [ecx + 0xe0]
test eax, eax
jne case.default.0x546930
lea eax, [ebp + edi]
mov ebx, ecx
mov dword [esp + 0x18], eax
lea eax, [ecx + 8]
mov dword [esp + 0x1c], eax
jmp 0x546da5
ja 0x546d76
cmp esi, eax
jbe 0x546dd2
mov eax, dword [ebx + 0x48]
mov edx, dword [ebx + 0x4c]
add eax, 1
adc edx, 0
mov dword [ebx + 0x48], eax
mov edi, edx
mov dword [ebx + 0x4c], edx
or edi, eax
jne 0x546dd2
mov dword [ebx + 0xe0], 2
add ebp, 1
cmp ebp, dword [esp + 0x18]
je 0x5469e0
movsx eax, word [ebx + 0x58]
movzx edx, byte [ebp]
lea ecx, [eax + 1]
mov word [ebx + 0x58], cx
mov byte [ebx + eax + 0x5a], dl
mov esi, dword [ebx + 0x50]
mov edi, dword [ebx + 0x54]
mov eax, esi
mov edx, edi
add eax, 8
adc edx, 0
mov dword [ebx + 0x50], eax
cmp edi, edx
mov dword [ebx + 0x54], edx
jae 0x546d70
mov eax, dword [ebx + 0xe0]
test eax, eax
jne 0x546d98
add cx, 0xff80
jne 0x546d98
mov eax, dword [esp + 0x1c]
call fcn.0048e7b0
jmp 0x546d98
test edi, edi
je case.default.0x546930
test ebp, ebp
je case.default.0x546930
mov eax, dword [ecx + 0x74]
test eax, eax
jne 0x547135
mov eax, dword [ecx + 0x78]
test eax, eax
jne case.default.0x546930
add edi, ebp
mov ebx, ecx
jmp 0x546e38
add dword [ebx + 0x28], 1
jne 0x546e60
mov dword [ebx + 0x78], 2
add ebp, 1
cmp ebp, edi
je 0x5469e0
movsx eax, word [ebx + 0x30]
movzx ecx, byte [ebp]
lea edx, [eax + 1]
mov word [ebx + 0x30], dx
mov byte [ebx + eax + 0x32], cl
xor ecx, ecx
mov eax, dword [ebx + 0x2c]
add eax, 8
jb 0x5471cd
test ecx, ecx
mov dword [ebx + 0x2c], eax
jne 0x546e20
mov esi, dword [ebx + 0x78]
test esi, esi
jne 0x546e2d
cmp dx, 0x40
jne 0x546e2d
lea eax, [ebx + 8]
call fcn.0048e240
jmp 0x546e2d
mov dword [esp + 8], edi
mov dword [esp + 4], ebp
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
jmp case.default.0x546930
mov eax, edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], 0
sar eax, 0x1f
mov dword [esp + 0x34], eax
mov eax, 0x40
sub eax, dword [esp + 0x18]
cmp eax, 4
mov edx, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], eax
jae 0x5470d0
test eax, eax
je 0x546ee4
movzx eax, byte [ebp]
and edx, 2
mov byte [ebx], al
jne 0x54719c
lea eax, [ecx + 0x28]
mov edx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
call fcn.00482880
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov esi, ebx
xor ebx, ebx
and esi, 0x3f
sub eax, esi
sbb edx, ebx
cmp dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
jg 0x546fc1
jl 0x546f2f
cmp dword [esp + 0x38], eax
jae 0x546fc1
mov ebx, dword [esp + 0x38]
mov edx, 0xffffffff
lea esi, [ebp + ebx]
not ebx
mov eax, ebx
add eax, dword [esp + 0x28]
adc edx, dword [esp + 0x2c]
shrd eax, edx, 6
mov edx, ebp
sub edx, dword [esp + 0x18]
mov dword [esp + 0x18], edi
shl eax, 6
mov edi, esi
lea ebx, [eax + edx + 0x80]
mov esi, ebx
mov ebx, dword [esp + 0x1c]
nop
lea esi, [esi]
mov edx, edi
mov eax, ebx
add edi, 0x40
call fcn.00482880
cmp esi, edi
jne 0x546f70
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
mov edx, 0xffffffff
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
add ecx, 0x40
not esi
adc ebx, 0
mov eax, esi
add eax, dword [esp + 0x28]
adc edx, dword [esp + 0x2c]
shrd eax, edx, 6
shr edx, 6
shld edx, eax, 6
shl eax, 6
add eax, ecx
adc edx, ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x20]
sub edi, eax
add eax, ebp
mov dword [esp + 4], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], edi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
jmp case.default.0x546930
test ebx, ebx
je 0x5469e0
movzx eax, byte [ebp]
test bl, 2
mov byte [esi], al
je 0x5469e0
movzx eax, word [ebp + ebx - 2]
mov word [esi + ebx - 2], ax
jmp 0x5469e0
mov eax, dword [esp + 0x18]
mov ecx, ebx
mov edx, ebp
and ecx, 0xffffffc0
and ebx, 0x3f
call fcn.0049ba20
mov ebp, eax
jmp 0x546b26
mov eax, dword [ebp]
mov dword [ebx], eax
mov eax, dword [ebp + esi - 4]
mov dword [ebx + esi - 4], eax
lea eax, [ebx + 4]
and eax, 0xfffffffc
sub ebx, eax
mov ecx, ebx
sub ebp, ebx
add ecx, esi
and ecx, 0xfffffffc
cmp ecx, 4
jb 0x5469e0
and ecx, 0xfffffffc
xor edx, edx
mov ebx, dword [ebp + edx]
mov dword [eax + edx], ebx
add edx, 4
cmp edx, ecx
jb 0x54706c
jmp 0x5469e0
mov edx, dword [ebp]
mov ecx, ebp
mov dword [eax], edx
mov edx, dword [ebp + esi - 4]
mov dword [eax + esi - 4], edx
lea edx, [eax + 4]
and edx, 0xfffffffc
sub eax, edx
sub ecx, eax
add eax, esi
and eax, 0xfffffffc
cmp eax, 4
jb 0x546bbd
and eax, 0xfffffffc
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], eax
xor eax, eax
mov ebx, dword [ecx + eax]
mov dword [edx + eax], ebx
add eax, 4
cmp eax, dword [esp + 0x1c]
jb 0x5470b4
mov ebx, dword [esp + 0x20]
jmp 0x546bbd
mov eax, dword [ebp]
lea esi, [ebx + 4]
and esi, 0xfffffffc
mov dword [ebx], eax
mov edx, dword [esp + 0x38]
mov eax, dword [ebp + edx - 4]
mov dword [ebx + edx - 4], eax
sub ebx, esi
mov eax, ebp
sub eax, ebx
add ebx, dword [esp + 0x38]
mov edx, eax
and ebx, 0xfffffffc
cmp ebx, 4
jb 0x546ee4
and ebx, 0xfffffffc
xor eax, eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [edx + eax]
mov dword [esi + eax], ecx
add eax, 4
cmp eax, ebx
jb 0x547108
mov ecx, dword [esp + 0x3c]
jmp 0x546ee4
mov eax, dword [esp + 0x14]
mov dword [ecx + 0xe0], 3
mov ecx, dword [eax]
jmp case.default.0x546930
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x78], 3
mov ecx, dword [eax]
jmp case.default.0x546930
mov ebx, dword [ebp]
mov esi, ebp
mov dword [eax], ebx
mov ebx, dword [ebp + edx - 4]
mov dword [eax + edx - 4], ebx
lea ebx, [eax + 4]
and ebx, 0xfffffffc
sub eax, ebx
sub esi, eax
add eax, edx
and eax, 0xfffffffc
cmp eax, 4
jb 0x546b04
and eax, 0xfffffffc
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
xor eax, eax
mov edx, dword [esi + eax]
mov dword [ebx + eax], edx
add eax, 4
cmp eax, dword [esp + 0x1c]
jb 0x547184
mov edx, dword [esp + 0x20]
jmp 0x546b04
mov edx, dword [esp + 0x38]
movzx eax, word [ebp + edx - 2]
mov word [ebx + edx - 2], ax
jmp 0x546ee4
movzx edx, word [ebp + esi - 2]
mov word [eax + esi - 2], dx
jmp 0x546bbd
movzx ebx, word [ebp + edx - 2]
mov word [eax + edx - 2], bx
jmp 0x546b04
mov ecx, 1
jmp 0x546e59
mov ecx, 1
jmp 0x546d09