Function at 0x4558c0
Capabilities:
Encode data using base64

Disassembly:
sub esp, 0x124
push ebx
push ebp
push esi
mov esi, dword [esp + 0x134]
push edi
mov cl, byte [esi + 6]
mov eax, ecx
and eax, 0xff
add eax, 0xfffffffc
cmp eax, 0xfa
ja case.0x4558f1.26
xor edx, edx
mov dl, byte [eax + 0x456224]
jmp dword [edx*4 + 0x4561c8]
call fcn.0041c4f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
xor eax, eax
mov al, byte [esi + 1]
shl eax, 1
cmp word [eax + 0x4ada7c], 0
jne 0x455945
cmp word [eax + 0x4ad9b4], 0
jne 0x455945
push 0x3f
call fcn.0041c510
add esp, 4
mov edi, eax
call fcn.004789d0
test eax, eax
je 0x45598f
xor eax, eax
mov al, byte [esi + 1]
push eax
call fcn.00458020
jmp 0x45598c
cmp cl, 0x10
jne 0x45596c
push 0x40
call fcn.0041c510
add esp, 4
mov edi, eax
call fcn.004789d0
test eax, eax
je 0x45598f
xor ecx, ecx
mov cl, byte [esi + 1]
push ecx
call fcn.00458020
jmp 0x45598c
push 0x41
call fcn.0041c510
add esp, 4
mov edi, eax
call fcn.004789d0
test eax, eax
je 0x45598f
xor edx, edx
mov dl, byte [esi + 1]
push edx
call fcn.004580d0
add esp, 4
xor eax, eax
mov al, byte [esi + 1]
lea ecx, [eax*8]
sub ecx, eax
lea eax, [esp + 0x34]
lea edx, [ecx*8 + 0x4ad758]
push edx
push edi
push eax
call fcn.0047c875
push 0x28
lea ecx, [esp + 0x44]
push 8
push ecx
call fcn.0042ca40
xor edx, edx
mov dl, byte [esi + 1]
mov byte [edx + 0x4acb5c], 3
mov al, byte [esi + 1]
push eax
call fcn.00412350
mov eax, dword [0x4ae21c]
add esp, 0x1c
test eax, eax
je 0x455a0f
xor eax, eax
xor ecx, ecx
mov bl, byte [eax + 0x4ab984]
mov cl, byte [esi + 1]
mov dl, 1
shl dl, cl
not dl
and bl, dl
mov byte [eax + 0x4ab984], bl
inc eax
cmp eax, 8
jl 0x4559e1
xor ecx, ecx
mov al, 1
mov cl, byte [esi + 1]
shl al, cl
mov byte [ecx + 0x4ab984], al
call fcn.00411f60
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
push esi
call fcn.0043d580
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
push esi
call fcn.0043d630
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
push esi
call fcn.0043d680
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, dword [0x4ae21c]
xor eax, eax
mov al, byte [esi + 8]
neg ecx
sbb ecx, ecx
and ecx, 2
add ecx, 7
cmp eax, ecx
jge case.0x4558f1.26
push eax
call fcn.004204f0
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov al, byte [esi + 8]
mov ecx, eax
and ecx, 0xff
jle 0x455aa9
add esi, 0xa
lea edi, [esp + 0x18]
shr ecx, 1
rep movsd dword es:[edi], dword [esi]
adc ecx, ecx
rep movsw word es:[edi], word [esi]
cmp al, 9
lea edi, [esp + 0x18]
mov byte [esp + 0x10], al
jb 0x455aba
mov byte [esp + 0x10], 9
mov ebx, dword [esp + 0x10]
xor esi, esi
and ebx, 0xff
cmp esi, ebx
jge 0x455add
movsx eax, word [edi]
push 0
push eax
add edi, 2
call fcn.00451100
add esp, 8
jmp 0x455adf
xor eax, eax
xor ecx, ecx
mov cl, byte [0x4b4934]
lea edx, [esi + ecx*8]
add ecx, edx
inc esi
cmp esi, 9
mov dword [ecx*4 + 0x4bb6d8], eax
jl 0x455ac6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov di, word [esi + 8]
mov bp, word [esi + 0xa]
mov bl, byte [esi + 0xc]
mov word [esp + 0x10], di
mov word [esp + 0x12], bp
mov byte [esp + 0x14], bl
call fcn.0043dff0
test eax, eax
je 0x455b6a
mov esi, 0x100
xor ecx, ecx
mov cl, byte [eax + 0x27]
test dword [ecx*4 + 0x4cf524], esi
je 0x455b61
mov cx, word [eax + 0x1e]
test cl, 7
jne 0x455b61
mov dl, byte [eax + 0x2c]
cmp dl, byte [0x4b4934]
jne 0x455b61
test ch, 0x10
je 0x455b57
or ch, 8
jmp 0x455b5d
and ecx, 0xe7ff
mov word [eax + 0x1e], cx
call fcn.0043df70
test eax, eax
jne 0x455b2b
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
mov cx, word [0x4acbdc]
cmp di, cx
jae case.0x4558f1.26
cmp bp, cx
jae case.0x4558f1.26
mov cl, byte [eax + 0x2c]
mov dl, byte [0x4b4934]
cmp cl, dl
jne case.0x4558f1.26
cmp bl, 0x3a
jb case.0x4558f1.26
cmp bl, 0x68
ja case.0x4558f1.26
mov esi, dword [esp + 0x14]
mov ecx, esi
and ecx, 0xff
mov edx, dword [ecx*4 + 0x4cf524]
test dl, 0x20
je case.0x4558f1.26
test edx, 0x680000
jne case.0x4558f1.26
mov dl, byte [ecx + 0x490eae]
mov cl, byte [eax + 0x27]
cmp dl, cl
jne case.0x4558f1.26
mov eax, dword [esp + 0x10]
push esi
push eax
call fcn.0043afe0
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
mov esi, 0x100
xor ecx, ecx
mov cl, byte [eax + 0x27]
test dword [ecx*4 + 0x4cf524], esi
je 0x455c4f
mov cx, word [eax + 0x1e]
test cl, 7
jne 0x455c4f
mov dl, byte [eax + 0x2c]
mov bl, byte [0x4b4934]
cmp dl, bl
jne 0x455c4f
test ch, 0x10
je 0x455c48
and ecx, 0xf7ff
jmp 0x455c4b
or ch, 8
mov word [eax + 0x1e], cx
call fcn.0043df70
test eax, eax
jne 0x455c17
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
mov esi, 0x100
xor ecx, ecx
mov cl, byte [eax + 0x27]
test dword [ecx*4 + 0x4cf524], esi
je 0x455cad
mov cx, word [eax + 0x1e]
test cl, 7
jne 0x455cad
mov dl, byte [eax + 0x2c]
mov bl, byte [0x4b4934]
cmp dl, bl
jne 0x455cad
test ch, 0x10
je 0x455ca3
or ch, 8
jmp 0x455ca9
and ecx, 0xe7ff
mov word [eax + 0x1e], cx
call fcn.0043df70
test eax, eax
jne 0x455c75
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov di, word [esi + 0xc]
mov bp, word [esi + 8]
mov bx, word [esi + 0xa]
mov al, byte [esi + 0xe]
mov word [esp + 0x1c], di
mov word [esp + 0x18], bp
mov word [esp + 0x1a], bx
mov byte [esp + 0x1e], al
call fcn.00456320
cmp byte [esp + 0x1e], 0x3d
jae case.0x4558f1.26
mov eax, dword [esp + 0x1e]
and eax, 0xff
mov dword [esp + 0x10], eax
mov ecx, dword [eax*4 + 0x495fcc]
test ecx, ecx
je case.0x4558f1.26
mov ax, word [0x4acbdc]
cmp bp, ax
jae case.0x4558f1.26
cmp bx, ax
jae case.0x4558f1.26
movsx ecx, di
push 0
push ecx
call fcn.00451100
mov bl, byte [esp + 0x26]
mov ecx, dword [esp + 0x20]
mov edi, eax
mov eax, dword [esp + 0x22]
xor dx, dx
push eax
mov dl, bl
push ecx
mov word [0x4be258], dx
call fcn.0043e330
mov edx, dword [esp + 0x20]
add esp, 0x10
mov eax, dword [edx*4 + 0x495fcc]
mov dword [esp + 0x30], eax
call fcn.0043dff0
mov esi, eax
test esi, esi
je 0x455ec0
mov ebp, dword [esp + 0x1e]
mov eax, 0x300
jmp 0x455d84
mov eax, 0x300
mov cl, byte [esi + 0x2c]
mov dl, byte [0x4b4934]
cmp cl, dl
jne 0x455eb1
cmp esi, edi
je 0x455eb1
cmp bl, 0x17
jne 0x455dc0
xor edx, edx
mov dl, byte [esi + 0x27]
test dword [edx*4 + 0x4cf524], eax
je 0x455eb1
test byte [esi + 0x75], 0x20
jne 0x455eb1
jmp 0x455e27
cmp bl, 0x18
jne 0x455de3
xor ecx, ecx
mov cl, byte [esi + 0x27]
test dword [ecx*4 + 0x4cf524], eax
je 0x455eb1
test byte [esi + 0x75], 0x20
je 0x455eb1
jmp 0x455e27
cmp bl, 0x11
je 0x455e12
cmp bl, 0x12
je 0x455e12
mov edx, dword [esp + 0x10]
mov al, byte [edx + 0x49636c]
test al, al
je 0x455e27
xor eax, eax
mov al, byte [esi + 0x27]
test dword [eax*4 + 0x4cf524], 0x80000
jne 0x455e27
jmp 0x455eb1
xor ecx, ecx
mov cl, byte [esi + 0x27]
mov eax, dword [ecx*4 + 0x4cf524]
test ah, 0x40
je 0x455eb1
mov dl, byte [esi + 0x27]
push edx
push ebp
call fcn.004557e0
add esp, 8
test eax, eax
je 0x455e61
mov cl, byte [esi + 0x27]
mov edx, ecx
and edx, 0xff
test dword [edx*4 + 0x4cf524], eax
je 0x455eb1
test eax, 0x20000
je 0x455e61
push ebp
push ecx
call fcn.00455820
add esp, 8
test eax, eax
je 0x455eb1
mov eax, dword [0x4ae21c]
test eax, eax
je 0x455e71
mov byte [esi + 0x8d], 0x3c
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1a]
mov dword [esp + 0x14], eax
lea edx, [esp + 0x2c]
lea eax, [esp + 0x14]
push edx
push eax
push esi
mov dword [esp + 0x38], ecx
call fcn.0043e530
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
push ecx
push edi
push edx
push eax
push esi
call fcn.00451070
add esp, 0x20
mov dword [esi + 0x54], 0
call fcn.0043df70
mov esi, eax
test esi, esi
jne 0x455d7f
pop edi
pop esi
pop ebp
mov word [0x4be258], 0
pop ebx
add esp, 0x124
ret
mov di, word [esi + 8]
mov ax, word [0x4acbdc]
mov bx, word [esi + 0xa]
mov si, word [esi + 0xc]
cmp di, ax
jae case.0x4558f1.26
cmp bx, ax
jae case.0x4558f1.26
movsx ecx, si
push 0
push ecx
call fcn.00451100
push eax
push ebx
push edi
call fcn.0043b870
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
mov dl, byte [eax + 0x2c]
mov cl, byte [0x4b4934]
cmp dl, cl
jne case.0x4558f1.26
push 1
push 1
push eax
call fcn.00451770
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
xor ecx, ecx
mov cl, byte [eax + 0x27]
test byte [ecx*4 + 0x4cf524], 0x20
je case.0x4558f1.26
test byte [eax + 0x1e], 0x80
je case.0x4558f1.26
mov dl, byte [eax + 0x2c]
mov cl, byte [0x4b4934]
cmp dl, cl
jne case.0x4558f1.26
mov cl, byte [esi + 8]
cmp cl, 4
jae case.0x4558f1.26
push ecx
mov cl, byte [esi + 9]
push ecx
push eax
call fcn.0040e2a0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
test eax, eax
je case.0x4558f1.26
xor edx, edx
mov dl, byte [eax + 0x27]
test byte [edx*4 + 0x4cf524], 0x20
je case.0x4558f1.26
mov cl, byte [eax + 0x2c]
mov dl, byte [0x4b4934]
cmp cl, dl
jne case.0x4558f1.26
push eax
call fcn.0040e1c0
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov cl, byte [0x4acb18]
mov al, byte [esi + 8]
mov edx, 1
shl edx, cl
test al, dl
je case.0x4558f1.26
test dword [0x4d6b00], 0x100000
je 0x456028
mov cl, byte [esi + 9]
lea edx, [esi + 0xa]
push ecx
push edx
call fcn.0042cd40
add esp, 8
mov al, byte [esi + 9]
push 0x28
add esi, 0xa
push eax
push esi
call fcn.0042ca40
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.0043dff0
mov edi, eax
test edi, edi
je case.0x4558f1.26
xor ecx, ecx
mov cl, byte [edi + 0x27]
mov eax, dword [ecx*4 + 0x4cf524]
test ah, 4
je case.0x4558f1.26
mov dl, byte [edi + 0x2c]
mov al, byte [0x4b4934]
cmp dl, al
jne case.0x4558f1.26
mov si, word [esi + 8]
push 0
movsx eax, si
push eax
call fcn.00451100
push eax
push edi
call fcn.00451150
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov eax, dword [0x4ae21c]
test eax, eax
je 0x4560d8
mov al, byte [esi + 0xc]
mov cl, byte [0x4b4934]
cmp al, cl
jne case.0x4558f1.26
mov cl, byte [esi + 0xb]
mov dl, byte [esi + 0xa]
push ecx
mov cx, word [esi + 8]
push edx
push ecx
push eax
call fcn.00433130
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov al, byte [esi + 0xa]
mov cl, byte [0x4b4934]
cmp al, cl
jne case.0x4558f1.26
mov dl, byte [esi + 9]
mov cl, byte [esi + 8]
push edx
push ecx
push eax
call fcn.004330b0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov dl, byte [esi + 1]
mov edi, dword [esi + 8]
push edx
push edi
call fcn.00430320
mov al, byte [0x4b497e]
add esp, 8
test al, al
je 0x456137
mov al, byte [0x4ad903]
test al, al
je 0x456137
call fcn.004798e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
xor eax, eax
mov al, byte [esi + 1]
lea ecx, [eax*8]
sub ecx, eax
lea edx, [ecx*8 + 0x4ad758]
push edx
push edi
call fcn.00415ec0
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.00436ee0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
call fcn.00436fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov al, byte [esi + 9]
mov cl, byte [esi + 8]
cmp al, 0x12
mov byte [esp + 0x14], al
ja case.0x4558f1.26
test cl, cl
jne 0x4561ab
mov eax, dword [esp + 0x14]
push eax
call fcn.00456b70
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
cmp cl, 1
jne case.0x4558f1.26
mov ecx, dword [esp + 0x14]
push ecx
call fcn.00456c10
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret