Function at 0x4c8ae0
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
cmp dword [esi + 0x3c], 0
lea eax, [edi*4]
mov ecx, dword [esi + 0x40]
mov dword [ebp - 4], eax
jne 0x4c8b12
mov eax, dword [eax + 0x20a514c]
sub ecx, dword [eax + 0x8c4]
jmp 0x4c8b15
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], ecx
call fcn.00526930
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [ebp - 0xc]
jg case.0x4c8b3a.1
mov eax, dword [esi + 0x3c]
cmp eax, 0x15
ja case.0x4c8b3a.1
jmp dword [eax*4 + 0x4c93ec]
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov eax, dword [edi*4 + 0x20a514c]
cmp dword [eax + 4], 3
jne case.0x4c8b3a.1
mov eax, dword [eax + 0x624]
xor ecx, ecx
add eax, 4
mov edx, eax
mov bl, byte [edx]
cmp bl, 0xff
je 0x4c8b83
cmp bl, 0x86
je case.0x4c8b3a.1
inc ecx
add edx, 0x1c
cmp ecx, 0x20
jl 0x4c8b73
xor ecx, ecx
nop
mov dl, byte [eax]
cmp dl, 0xff
je 0x4c8ba0
cmp dl, 0xa5
je case.0x4c8b3a.1
inc ecx
add eax, 0x1c
cmp ecx, 0x20
jl 0x4c8b90
mov eax, dword [esi + 0x44]
push 0
push 0
push 0
push 0
cmp eax, 0xffffffff
jne 0x4c8bbd
push 0
jmp 0x4c8bbe
push eax
mov eax, dword [edi*4 + 0x20a514c]
push 0x3d
push 0
push eax
call fcn.00477200
mov edx, dword [edi*4 + 0x20a514c]
mov ecx, edi
movsx eax, word [edx + 0x146]
movsx edx, word [edx + 0x144]
push eax
call fcn.00525a30
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push ecx
mov ecx, esi
call fcn.004c9450
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push ecx
mov ecx, esi
call fcn.004c9600
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push ecx
mov ecx, esi
call fcn.004c97a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 0x48]
xor ebx, ebx
cmp ecx, 1
je 0x4c8c4b
cmp ecx, 0x65
je 0x4c8c4b
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x20a514c]
mov dword [ebp + 0xc], edx
jmp 0x4c8c78
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20a514c]
mov dword [ebp + 0xc], eax
mov ecx, dword [eax + 0x300]
mov eax, 0x51eb851f
imul ecx, dword [esi + 0x4c]
imul ecx
mov ecx, dword [esi + 0x48]
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, dword [ebp + 0xc]
lea eax, [esi + 0x4c]
cmp ecx, 2
je 0x4c8c89
cmp ecx, 0x66
je 0x4c8c89
mov edx, eax
jmp 0x4c8cae
mov ecx, dword [edx + 0x300]
imul ecx, dword [eax]
mov eax, 0xae147ae1
imul ecx
mov ecx, dword [esi + 0x48]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [esi + 0x4c]
add ebx, eax
lea eax, [esi + 0x4c]
cmp ecx, 0xb
je 0x4c8cb8
cmp ecx, 0x6f
jne 0x4c8cbd
add ebx, dword [eax]
lea edx, [esi + 0x4c]
cmp ecx, 0xc
je 0x4c8cc7
cmp ecx, 0x70
jne 0x4c8cc9
sub ebx, dword [edx]
mov ecx, dword [ebp + 0xc]
mov eax, dword [esi + 0x44]
mov dword [ecx + 0xdec], eax
mov eax, dword [edi*4 + 0x20a514c]
mov dword [eax + 0xde8], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [esi + 0x48]
xor ecx, ecx
mov dword [ebp + 8], ecx
cmp ebx, 1
je 0x4c8d0b
cmp ebx, 0x65
je 0x4c8d0b
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x20a514c]
mov dword [ebp + 0xc], edx
jmp 0x4c8d45
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x20a514c]
mov dword [ebp + 0xc], ecx
mov eax, dword [ecx + 0x2bc]
add eax, dword [ecx + 0x2b8]
cdq
sub eax, edx
mov ecx, eax
mov eax, 0x51eb851f
sar ecx, 1
imul ecx, dword [esi + 0x4c]
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp + 0xc]
mov dword [ebp + 8], ecx
lea eax, [esi + 0x4c]
cmp ebx, 2
je 0x4c8d56
cmp ebx, 0x66
je 0x4c8d56
mov edx, eax
jmp 0x4c8d8b
mov eax, dword [edx + 0x2bc]
add eax, dword [edx + 0x2b8]
cdq
sub eax, edx
sar eax, 1
mov ecx, eax
mov eax, 0x51eb851f
neg ecx
imul ecx, dword [esi + 0x4c]
imul ecx
mov ecx, dword [ebp + 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [esi + 0x4c]
add ecx, eax
lea eax, [esi + 0x4c]
cmp ebx, 0xb
je 0x4c8d95
cmp ebx, 0x6f
jne 0x4c8d9a
add ecx, dword [eax]
lea edx, [esi + 0x4c]
cmp ebx, 0xc
je 0x4c8da4
cmp ebx, 0x70
jne 0x4c8da6
sub ecx, dword [edx]
mov edx, dword [ebp + 0xc]
mov eax, dword [esi + 0x44]
mov dword [edx + 0xdf4], eax
mov eax, dword [edi*4 + 0x20a514c]
mov dword [eax + 0xdf0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebp - 4]
mov eax, dword [ebx + 0x20a514c]
cmp word [eax + 0x78], 1
jne case.0x4c8b3a.1
call fcn.00526930
mov ecx, 6
cdq
idiv ecx
lea ecx, [edx + 2]
mov edx, dword [esi + 0x48]
mov dword [ebp - 0xc], ecx
cmp edx, 1
je 0x4c8e09
cmp edx, 0x65
je 0x4c8e09
mov eax, dword [ebx + 0x20a514c]
xor ebx, ebx
mov dword [ebp + 8], eax
jmp 0x4c8e3b
mov eax, dword [ebx + 0x20a514c]
movd xmm0, dword [esi + 0x4c]
imul ecx, ecx, 0x10c
cvtdq2ps xmm0, xmm0
mov dword [ebp + 8], eax
mov eax, dword [eax + 0x390]
mulss xmm0, dword [eax + ecx + 0x20]
mov ecx, dword [ebp - 0xc]
divss xmm0, dword [0x56a810]
cvttss2si ebx, xmm0
lea eax, [esi + 0x4c]
cmp edx, 2
je 0x4c8e4c
cmp edx, 0x66
je 0x4c8e4c
mov ecx, eax
jmp 0x4c8e7d
mov eax, dword [ebp + 8]
movd xmm0, dword [esi + 0x4c]
imul ecx, ecx, 0x10c
cvtdq2ps xmm0, xmm0
mov eax, dword [eax + 0x390]
mulss xmm0, dword [eax + ecx + 0x20]
lea ecx, [esi + 0x4c]
divss xmm0, dword [0x56a82c]
cvttss2si eax, xmm0
add ebx, eax
lea eax, [esi + 0x4c]
cmp edx, 0xb
je 0x4c8e87
cmp edx, 0x6f
jne 0x4c8e8c
add ebx, dword [eax]
lea ecx, [esi + 0x4c]
cmp edx, 0xc
je 0x4c8e96
cmp edx, 0x70
jne 0x4c8e98
sub ebx, dword [ecx]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
imul ecx, edx, 0x10c
movd xmm0, ebx
cvtdq2ps xmm0, xmm0
mov eax, dword [eax + 0x390]
mov byte [ebp - 9], dl
lea edx, [ebp - 0xc]
push 6
mov word [ebp - 0xc], 0x6c1
mov byte [ebp - 0xa], 0x2a
addss xmm0, dword [eax + ecx + 0x20]
mov byte [ebp - 7], 0
movss dword [eax + ecx + 0x20], xmm0
xorps xmm0, xmm0
mov eax, dword [edi*4 + 0x20a514c]
mov eax, dword [eax + 0x390]
maxss xmm0, dword [eax + ecx + 0x20]
movss dword [eax + ecx + 0x20], xmm0
mov eax, dword [edi*4 + 0x20a514c]
mov eax, dword [eax + 0x390]
cvttss2si eax, dword [eax + ecx + 0x20]
mov ecx, edi
mov byte [ebp - 8], al
call fcn.00526480
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push ebx
mov ecx, esi
call fcn.004c9940
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20a514c]
mov dword [ebp + 0xc], eax
cmp dword [eax + 4], 3
jne case.0x4c8b3a.1
mov ecx, dword [ebx*4 + 0x20a514c]
mov eax, 0x1cb
cmp word [ecx + 0xcc], ax
jne 0x4c8f7a
cmp byte [ecx + 0x149], 0x3a
jne 0x4c8f7a
cmp ebx, edi
je case.0x4c8b3a.1
mov edx, dword [esi + 0x50]
mov eax, dword [esi + 0x4c]
cmp edx, 1
jge 0x4c8fa7
cmp eax, 1
mov edx, 3
cmovl eax, edx
mov edx, ecx
mov ecx, dword [ebp + 0xc]
push eax
call fcn.00524d10
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp eax, 1
mov esi, 3
cmovl eax, esi
push eax
push edx
push edi
lea edx, [esi + 0x36]
call fcn.00523ad0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x20a514c]
cmp dword [ecx + 4], 3
jne case.0x4c8b3a.1
cmp word [ecx + 0x78], 1
jne case.0x4c8b3a.1
cmp dword [esi + 0x50], 0x1c
jne 0x4c900c
push 1
push ecx
call fcn.004774b0
mov eax, dword [ebp - 4]
cmp dword [esi + 0x50], 0x1b
jne case.0x4c8b3a.1
push 2
push dword [eax + 0x20a514c]
call fcn.004774b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebx*4 + 0x20a514c]
mov eax, dword [esi + 0x50]
mov dword [ecx + 0xe24], eax
mov ecx, dword [ebx*4 + 0x20a514c]
mov eax, dword [esi + 0x44]
mov dword [ecx + 0xe28], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebx*4 + 0x20a514c]
mov eax, dword [esi + 0x50]
push 0
push 0
mov dword [ecx + 0xe1c], eax
mov ecx, dword [ebx*4 + 0x20a514c]
mov eax, dword [esi + 0x44]
push 0
push 0
mov dword [ecx + 0xe20], eax
mov ecx, dword [esi + 0x44]
mov eax, dword [ebx*4 + 0x20a514c]
cmp ecx, 0xffffffff
jne 0x4c90a1
push 0
push 0x3f
push 0
push eax
call fcn.00477200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push ecx
push 0x3f
push 0
push eax
call fcn.00477200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov esi, dword [ebx*4 + 0x20a514c]
push esi
call fcn.00478780
test al, al
jne case.0x4c8b3a.1
movsx eax, word [esi + 0x144]
lea edx, [ebp + 0xc]
movzx ecx, byte [esi + 0x149]
mov dword [ebp + 0xc], eax
movsx eax, word [esi + 0x146]
push 0x64
push 5
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
push 5
push eax
call fcn.0051edc0
add esp, 0x10
test al, al
jne 0x4c9115
mov eax, dword [ebx*4 + 0x20a514c]
movsx esi, word [eax + 0x144]
movsx edi, word [eax + 0x146]
jmp 0x4c911b
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
push edi
mov edx, esi
mov ecx, ebx
call fcn.0051fb10
add esp, 4
test al, al
je case.0x4c8b3a.1
push 1
push ebx
push 6
push dword [ebx*4 + 0x20a514c]
call fcn.00517480
push edi
mov edx, esi
mov ecx, ebx
call fcn.00521330
mov eax, dword [ebx*4 + 0x20a514c]
add esp, 4
or ecx, 0xffffffff
mov word [eax + 0x2b0], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20a514c]
cmp dword [eax + 4], 3
jne case.0x4c8b3a.1
mov ecx, dword [ebx*4 + 0x20a514c]
mov edx, 0x37
push 0
push 0x190
push edi
call fcn.00523ad0
mov ecx, dword [ebx*4 + 0x20a514c]
add esp, 0xc
mov edx, 0x37
push 0
push 0x3e8
push edi
call fcn.00523ad0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x20a514c]
cmp dword [ecx + 4], 3
jne case.0x4c8b3a.1
mov eax, dword [esi + 0x50]
cmp eax, 1
jge 0x4c9236
mov edx, 1
call fcn.0051fa30
test al, al
jne case.0x4c8b3a.1
mov eax, dword [ebp - 4]
push 0
push 3
push 2
push ebx
push dword [esi + 0x4c]
push 0x37
push 0
push dword [eax + 0x20a514c]
call fcn.00477200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [esi + 0x4c]
mov ecx, dword [ebx*4 + 0x20a514c]
mov edx, 0x38
push eax
push edi
call fcn.00523ad0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 0x20a514c]
cmp dword [edx + 4], 3
jne case.0x4c8b3a.1
mov eax, dword [esi + 0x48]
cmp eax, 0xffffffff
je 0x4c9324
cmp dword [esi + 0x4c], 0xffffffff
mov ebx, dword [ebp + 8]
je 0x4c9324
shl eax, 9
add eax, dword [esi + 0x4c]
mov dword [ebp + 8], eax
mov eax, dword [edx + 0x390]
movsx eax, word [eax + 0x970]
cmp eax, dword [ebp + 8]
je 0x4c9324
mov eax, dword [edx + 0x390]
movsx eax, word [eax + 0xa7c]
cmp eax, dword [ebp + 8]
je 0x4c9324
mov eax, dword [edx + 0x390]
movsx eax, word [eax + 0xb88]
cmp eax, dword [ebp + 8]
je 0x4c9324
mov dword [edx + 0xfc], 0
mov ecx, dword [ecx + 0x20a514c]
push 0
push 0
push 0
movd xmm0, dword [ecx + 0x14c]
cvtdq2ps xmm0, xmm0
push 0
push 0
addss xmm0, dword [ecx + 0x100]
cvttss2si eax, xmm0
push eax
push ecx
push dword [ebx*4 + 0x20a514c]
mov ecx, 0x6509a4
call fcn.004dd760
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi + 0x50]
mov ecx, dword [ebx*4 + 0x20a514c]
push 0
cmp eax, 1
jge 0x4c9354
push 0
push 0
push 0
push 0
push 0
push edx
push ecx
mov ecx, 0x57ac4c
call fcn.00406af0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push eax
push edi
mov edx, 0x37
call fcn.00523ad0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test edi, edi
js case.0x4c8b3a.1
cmp edi, 0x1194
jge case.0x4c8b3a.1
mov ebx, dword [ebp - 4]
mov eax, dword [ebx + 0x20a514c]
cmp dword [eax + 4], 3
jne case.0x4c8b3a.1
mov ecx, dword [esi + 0x44]
push 0
push 0
push 0
push 0
cmp ecx, 0xffffffff
jne 0x4c93af
push 0
push 0x3f
push 0
push eax
call fcn.00477200
push 0
push 0
push 0
push 0
push 0
jmp 0x4c93c5
push ecx
push 0x3f
push 0
push eax
call fcn.00477200
push 0
push 0
push 0
push 0
push dword [esi + 0x44]
push 0x40
push 0
push dword [ebx + 0x20a514c]
call fcn.00477200
mov ecx, dword [ebx + 0x20a514c]
mov eax, dword [esi + 0x44]
mov dword [ecx + 0xe38], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8