Function at 0x4109df
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x18]
mov dword [ebp - 0x28], edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x20], esi
mov esi, dword [eax]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp + 0x10]
test esi, esi
mov dword [ebp - 0x24], edi
mov edi, dword [ebp + 0x14]
jne 0x41110a
cmp ecx, 0x8d
mov ebx, edx
jne 0x410a1d
mov edx, dword [eax + 0x58]
add dword [ebp - 0x28], edx
cmp dword [ebp - 0x1c], 0x8d
jne 0x410a2c
mov edx, dword [eax + 0x58]
add dword [ebp - 0x24], edx
cmp edi, 0x8d
jne 0x410a3a
mov esi, dword [eax + 0x58]
add dword [ebp - 0x20], esi
lea edx, [ecx - 4]
mov esi, ecx
cmp edx, 5
ja 0x410a66
cmp dword [eax + 0x34], ecx
jl 0x410a57
lea edx, [ecx*4 - 0xc]
mov ecx, dword [eax + 0x5c]
sub ecx, edx
jmp 0x410a5e
mov edx, dword [eax + 0x58]
lea ecx, [edx + ecx*4 - 0x28]
mov dword [ebp - 0x28], ecx
mov esi, 0x8d
mov ecx, dword [ebp - 0x1c]
lea edx, [ecx - 4]
cmp edx, 5
ja 0x410a98
cmp dword [eax + 0x34], ecx
jl 0x410a84
lea edx, [ecx*4 - 0xc]
mov ecx, dword [eax + 0x5c]
sub ecx, edx
jmp 0x410a8e
mov edx, dword [eax + 0x58]
mov ecx, dword [ebp - 0x1c]
lea ecx, [edx + ecx*4 - 0x28]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], 0x8d
lea edx, [edi - 4]
cmp edx, 5
ja 0x410ac2
cmp dword [eax + 0x34], edi
jl 0x410ab3
lea edx, [edi*4 - 0xc]
mov edi, dword [eax + 0x5c]
sub edi, edx
jmp 0x410aba
mov edx, dword [eax + 0x58]
lea edi, [edx + edi*4 - 0x28]
mov dword [ebp - 0x20], edi
mov edi, 0x8d
test esi, esi
jne 0x410acf
test bh, 0xfe
je case.default.0x410ae3
mov edx, ebx
xor dh, bh
sub edx, 0x60
cmp edx, 0xa
ja case.default.0x410ae3
mov ecx, ebx
mov ebx, eax
jmp dword [edx*4 + 0x76fdcc]
and ch, 0xfe
jne 0x410b1c
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov edx, esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, ebx
call fcn.004108b8
cmp eax, 4
jne 0x410fc3
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0x5030100
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
jmp 0x41103c
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0x15131110
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
jmp 0x41103c
and ch, 0xfe
jne 0x410baa
test edi, 0x40
je 0x410baa
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov edx, esi
mov dword [esp + 8], 0x40
neg eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, ebx
call fcn.004108b8
cmp eax, 4
jne 0x410fc3
test esi, esi
mov eax, dword [ebp - 0x20]
jne 0x410bcb
mov dword [ebp + 0xc], eax
mov dword [ebp + 8], edi
mov eax, ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00410255
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov ecx, esi
mov dword [ebp + 0x14], edi
mov edx, 0x2d2b2928
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
jmp 0x410c0e
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0x1d1b1918
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
add esp, 0x4c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.0040fbc6
lea eax, [esi - 1]
cmp eax, 0x3e
mov eax, 0xe
cmovbe eax, esi
cmp dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], eax
jne 0x410c54
test edi, 0x40
jne 0x410c54
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], edi
mov dword [esp], 0
mov ecx, dword [ebp - 0x1c]
mov dword [esp + 8], eax
jmp 0x410e42
mov edx, dword [ebp - 0x1c]
and edx, 0x40
cmp edi, dword [ebp - 0x2c]
jne 0x410c7f
test edx, edx
jne 0x410c7f
mov eax, dword [ebp - 0x24]
mov dword [esp], 0
mov ecx, edi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
jmp 0x410e42
mov eax, edi
and eax, 0x40
test edx, edx
je 0x410d4a
test eax, eax
je 0x410cbc
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
mov dword [esp], 0x40
mov dword [esp + 4], eax
mov eax, ebx
call fcn.0040faa3
test eax, eax
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x20], 0
jne 0x410fc3
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], edi
mov edx, 1
mov dword [esp], 0
mov ecx, dword [ebp - 0x2c]
sub eax, 0xffffff80
cmp eax, 0xff
mov eax, dword [ebp - 0x20]
mov dword [esp + 8], eax
mov eax, ebx
ja 0x410d17
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov byte [eax], 0x6b
mov edx, 2
mov eax, ebx
call fcn.0040f65f
test eax, eax
je 0x410fc3
mov byte [eax], 1
mov cl, byte [ebp - 0x24]
inc dword [ebx + 0x48]
jmp 0x410dab
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov byte [eax], 0x69
mov edx, 5
mov eax, ebx
call fcn.0040f65f
test eax, eax
je 0x410fc3
mov byte [eax], 4
mov edi, dword [ebp - 0x24]
add dword [ebx + 0x48], 4
jmp 0x410de1
test eax, eax
je 0x410de6
mov eax, dword [ebp - 0x20]
mov dword [esp], 0
mov edx, 1
mov ecx, dword [ebp - 0x2c]
sub eax, 0xffffff80
cmp eax, 0xff
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, ebx
ja 0x410db3
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov byte [eax], 0x6b
mov edx, 2
mov eax, ebx
call fcn.0040f65f
test eax, eax
je 0x410fc3
mov byte [eax], 1
inc dword [ebx + 0x48]
mov cl, byte [ebp - 0x20]
mov byte [eax + 1], cl
jmp 0x410e5b
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov byte [eax], 0x69
mov edx, 5
mov eax, ebx
call fcn.0040f65f
test eax, eax
je 0x410fc3
mov byte [eax], 4
add dword [ebx + 0x48], 4
mov edi, dword [ebp - 0x20]
mov dword [eax + 1], edi
jmp 0x410e5b
test edi, 0x80
je 0x410e0c
mov eax, edi
and eax, 0x3f
cmp dword [ebp - 0x2c], eax
je 0x410e05
mov eax, edi
sar eax, 8
and eax, 0x3f
cmp dword [ebp - 0x2c], eax
jne 0x410e0c
mov dword [ebp - 0x2c], 0xe
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, ebx
call fcn.0040fb78
test eax, eax
jne 0x410fc3
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x2c]
mov dword [esp + 4], edi
mov dword [esp], 0
mov dword [esp + 8], eax
mov edx, 2
mov eax, ebx
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov word [eax], 0xaf0f
test esi, 0x80
je case.default.0x410ae3
mov ecx, dword [ebp - 0x28]
mov dword [esp + 4], 0
mov edx, esi
mov dword [esp], 0xe
mov eax, ebx
call fcn.0040fb78
jmp 0x410ed3
test esi, esi
jne 0x410fd2
cmp dword [ebp - 0x1c], 1
jne 0x410eac
test edi, 0x40
je 0x410eac
mov eax, dword [ebp - 0x20]
sub eax, 0xffffff80
cmp eax, 0xff
jbe 0x410ee0
mov ecx, dword [ebp - 0x20]
jmp 0x410ec7
cmp edi, 1
jne 0x410ee0
test byte [ebp - 0x1c], 0x40
je 0x410ee0
mov eax, dword [ebp - 0x24]
sub eax, 0xffffff80
cmp eax, 0xff
jbe 0x410ee0
mov ecx, dword [ebp - 0x24]
mov edx, 0xa9
mov eax, ebx
call fcn.0040f6ad
test eax, eax
je case.default.0x410ae3
jmp 0x410fc3
mov eax, edi
and eax, 0x40
test byte [ebp - 0x1c], 0x40
mov dword [ebp - 0x28], eax
jne 0x4110e7
test eax, eax
je 0x410f06
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
jmp 0x410f79
cmp dword [ebp - 0x1c], 0x3f
jg 0x410f26
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], edi
mov dword [esp], 0
mov ecx, dword [ebp - 0x1c]
mov dword [esp + 8], eax
jmp 0x410fb3
cmp edi, 0x3f
jg 0x410f44
mov eax, dword [ebp - 0x24]
mov dword [esp], 0
mov ecx, edi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
jmp 0x410fb3
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov edx, 0xe
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, ebx
call fcn.0040fb78
test eax, eax
jne 0x410fc3
cmp dword [ebp - 0x28], 0
je 0x410f9c
mov dword [esp + 8], 0
mov dword [esp + 4], 0xe
mov eax, dword [ebp - 0x20]
mov ecx, 0x40
mov dword [esp], eax
mov edx, 1
mov eax, ebx
call fcn.0040f6e7
test eax, eax
je 0x410fc3
mov byte [eax], 0xf7
jmp 0x41110a
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], edi
mov ecx, 0xe
mov dword [esp], 0
mov dword [esp + 8], eax
mov edx, 1
mov eax, ebx
call fcn.0040f6e7
test eax, eax
jne 0x410fca
mov esi, dword [ebx]
jmp 0x41110a
mov byte [eax], 0x85
jmp 0x41110a
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0x25232120
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
jmp 0x41103c
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0xd0b0908
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
jmp 0x41103c
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x14], edi
mov ecx, esi
mov edx, 0x35333130
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], eax
add esp, 0x4c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.0040fede
mov eax, dword [ebp - 0x20]
and ecx, 0xfe00
mov dword [esp + 0x10], edi
mov dword [esp], esi
mov edx, 0x20
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
jmp 0x4110d8
mov eax, dword [ebp - 0x20]
and ecx, 0xfe00
mov dword [esp + 0x10], edi
mov dword [esp], esi
mov edx, 0x28
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
jmp 0x4110d8
mov eax, dword [ebp - 0x20]
and ecx, 0xfe00
mov dword [esp + 0x10], edi
mov dword [esp], esi
mov edx, 0x38
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
mov eax, ebx
call fcn.0041077d
mov esi, eax
jmp 0x41110a
xor esi, esi
jmp 0x41110a
cmp dword [ebp - 0x28], 0
jne 0x410f44
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], edi
mov ecx, dword [ebp - 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
jmp 0x410f84
add esp, 0x4c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret