Function at 0x420d10
Capabilities:
Encode data using base64
Query environment variable

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x84c
mov ebp, edx
mov ebx, eax
test ebx, ebx
jne 0x420d3c
mov dword [0x55b6a8], 0x3f
mov eax, 0x3f
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
test ebp, ebp
je 0x420d22
cmp dword [esp + 0x86c], 0
je 0x420d22
mov eax, dword [0x56e75c]
mov dword [esp + 0x848], eax
cmp eax, ebx
jl 0x420d6a
mov eax, 0xffffffff
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov edi, dword [ebp + eax*4]
test edi, edi
je 0x420d5a
mov esi, 0x5428c8
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x420d97
test dl, dl
je 0x420d93
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x420d97
add edi, 2
add esi, 2
test dl, dl
jne 0x420d77
xor eax, eax
jmp 0x420d9c
sbb eax, eax
or eax, 1
test eax, eax
je 0x421309
cmp dword [esp + 0x848], 0
jne 0x420dcd
mov eax, 1
mov dword [0x56c028], eax
mov dword [0x56e75c], eax
mov dword [esp + 0x82c], eax
mov dword [esp + 0x848], eax
jmp 0x420dd9
mov eax, dword [0x56c028]
mov dword [esp + 0x82c], eax
push str.POSIXLY_CORRECT
call dword [sym.imp.MSVCR80.dll_getenv]
pop ecx
mov dword [esp + 0x830], eax
mov edx, eax
mov eax, 2
test edx, edx
cmovne edx, eax
cmp dword [esp + 0x82c], 1
mov dword [esp + 0x830], edx
jne 0x420f33
cmp dword [esp + 0x830], 0
je 0x420e90
cmp dword [esp + 0x830], 2
mov eax, dword [esp + 0x848]
lea edx, [ebp + eax*4]
mov dword [esp + 0x844], edx
jne 0x420e72
mov ecx, edx
mov edx, dword [esp + 0x874]
mov eax, dword [ecx]
call fcn.00421840
test eax, eax
je 0x420d5a
mov edx, dword [esp + 0x848]
mov ecx, dword [ebp + edx*4]
mov dword [esp + 0x840], ecx
xor eax, eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
jmp 0x420f5e
mov ecx, dword [edx]
mov dword [esp + 0x840], ecx
xor eax, eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
jmp 0x420f5e
mov ecx, dword [esp + 0x848]
mov edx, dword [esp + 0x874]
mov dword [esp + 0x83c], ecx
lea esi, [ebp + ecx*4]
mov eax, dword [esi]
mov dword [esp + 0x844], esi
call fcn.00421840
mov dword [esp + 0x838], 0
test eax, eax
jne 0x421343
mov ecx, dword [esp + 0x838]
mov dword [esp + 0x820], ebx
mov ebx, dword [esp + 0x848]
mov dword [esp + 0x828], ebp
mov eax, dword [esp + 0x828]
inc ebx
mov dword [0x56e75c], ebx
inc ecx
lea edx, [eax + ebx*4]
mov ebp, dword [edx]
mov dword [esp + 0x844], edx
test ebp, ebp
je 0x4216da
movsx eax, byte [ebp]
cmp eax, 0x2d
je 0x421661
cmp eax, 0x2d
je 0x421327
cmp dword [esp + 0x874], 0
je 0x420ee6
cmp eax, 0x2b
jne 0x420ee6
jmp 0x421327
mov edx, dword [esp + 0x848]
xor eax, eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
lea ecx, [ebp + edx*4]
mov esi, dword [ecx]
mov dword [esp + 0x844], ecx
mov dword [esp + 0x840], esi
mov esi, dword [esp + 0x840]
mov edi, 0x5428c8
mov ecx, 2
xor eax, eax
test ecx, ecx
je 0x420f80
mov al, byte [esi]
sub al, byte [edi]
jne 0x420f80
inc esi
inc edi
dec ecx
jne 0x420f75
seta al
setb cl
sub al, cl
movsx eax, al
test eax, eax
je 0x420fb6
cmp dword [esp + 0x874], 0
je 0x420fac
mov eax, dword [esp + 0x840]
movsx eax, byte [eax]
cmp eax, 0x2b
je 0x420fb6
test eax, eax
jne 0x420fb6
mov esi, 0xffffffff
jmp 0x42126e
cmp dword [esp + 0x82c], 1
jne 0x420fac
mov esi, dword [esp + 0x840]
mov edi, 0x5428c8
mov ecx, 2
xor eax, eax
test ecx, ecx
je 0x420fe2
mov al, byte [esi]
sub al, byte [edi]
jne 0x420fe2
inc esi
inc edi
dec ecx
jne 0x420fd7
seta al
setb cl
sub al, cl
movsx eax, al
test eax, eax
jne 0x421007
mov dword [0x56c028], 2
mov eax, 2
mov dword [esp + 0x82c], eax
mov eax, dword [esp + 0x82c]
mov edx, dword [esp + 0x840]
lea ecx, [eax + edx]
mov dword [esp + 0x834], ecx
push 0x3d
push ecx
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
mov edx, eax
test edx, edx
je 0x4217cb
mov eax, edx
sub eax, dword [esp + 0x840]
sub eax, dword [esp + 0x82c]
mov ecx, dword [esp + 0x86c]
mov esi, 0xffffffff
cmp dword [ecx], 0
je 0x42126e
mov dword [esp + 0x824], esi
mov dword [esp + 0x81c], edx
mov dword [esp + 0x820], ebx
mov dword [esp + 0x828], ebp
xor edi, edi
mov ebp, eax
mov dword [esp + 0x814], edi
mov esi, edi
mov edx, dword [esp + 0x86c]
push ebp
mov ebx, dword [edx + esi]
push ebx
push dword [esp + 0x83c]
call fcn.004255b0
add esp, 0xc
test eax, eax
jne 0x4210e5
mov edx, ebx
mov ecx, edx
and edx, 0xfffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [edx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x4210c8
mov eax, edx
add edx, ecx
call fcn.00425520
cmp ebp, eax
je 0x421768
cmp dword [esp + 0x824], 0
jge 0x4216f7
mov dword [esp + 0x824], edi
mov edx, dword [esp + 0x86c]
inc edi
mov esi, edi
shl esi, 4
cmp dword [esi + edx], 0
jne 0x421083
mov esi, dword [esp + 0x824]
mov edx, dword [esp + 0x81c]
mov ebx, dword [esp + 0x820]
mov ebp, dword [esp + 0x828]
test esi, esi
jl 0x42126e
mov edi, dword [esp + 0x86c]
mov ecx, esi
shl ecx, 4
mov ecx, dword [ecx + edi + 4]
cmp ecx, 2
je 0x42123f
cmp ecx, 1
jne 0x421210
movsx ecx, byte [edx]
cmp ecx, 0x3d
jne 0x42114a
inc edx
movsx ecx, byte [edx]
test ecx, ecx
je 0x421170
mov dword [0x56c028], 1
mov dword [0x56e760], edx
xor ebx, ebx
mov dword [esp + 0x82c], 1
jmp 0x421270
mov eax, dword [esp + 0x848]
lea edi, [eax + 1]
cmp ebx, edi
jg 0x4211e8
cmp dword [0x55b6a4], 0
je 0x4211c8
call dword [sym.imp.MSVCR80.dll___iob_func]
push dword [ebp]
push str._s:_argument_required_for_option__
mov ebx, eax
add ebx, 0x40
push ebx
call dword [sym.imp.MSVCR80.dll_fprintf]
add esp, 0xc
test esi, esi
jl 0x421784
mov eax, dword [esp + 0x86c]
shl esi, 4
push dword [esi + eax]
push str.___s_n
push ebx
call dword [sym.imp.MSVCR80.dll_fprintf]
add esp, 0xc
mov dword [0x55b6a8], 0x3a
mov dword [0x56e75c], edi
mov eax, 0x3a
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esp + 0x844]
mov edx, dword [eax + 4]
mov dword [0x56c028], 1
mov ebx, 1
mov dword [0x56e760], edx
mov dword [esp + 0x82c], ebx
jmp 0x421270
test ecx, ecx
jne 0x42126e
test esi, esi
jl 0x42179d
mov dword [0x56c028], 1
mov dword [esp + 0x82c], 1
mov dword [0x56e760], 0
xor ebx, ebx
jmp 0x421270
movsx ecx, byte [edx]
cmp ecx, 0x3d
jne 0x42124b
inc edx
movsx ecx, byte [edx]
test ecx, ecx
je 0x421231
mov dword [0x56c028], 1
mov dword [0x56e760], edx
xor ebx, ebx
mov dword [esp + 0x82c], 1
jmp 0x421270
xor ebx, ebx
cmp dword [esp + 0x830], 0
jne 0x4212b6
cmp dword [esp + 0x82c], 1
jne 0x4212d1
cmp dword [esp + 0x838], 0
je 0x4212c0
mov edi, dword [esp + 0x83c]
mov edx, dword [esp + 0x838]
lea eax, [ebp + edi*4]
lea ecx, [ebx + 1]
call fcn.00421910
mov eax, edi
lea edx, [ebx + eax + 1]
mov dword [0x56e75c], edx
jmp 0x4212d1
cmp dword [esp + 0x82c], 1
jne 0x4212d1
mov eax, dword [esp + 0x848]
lea edx, [eax + ebx + 1]
mov dword [0x56e75c], edx
test esi, esi
jl 0x421821
mov eax, dword [esp + 0x86c]
shl esi, 4
mov eax, dword [esi + eax + 8]
test eax, eax
je 0x42180b
mov edx, dword [esp + 0x86c]
mov ecx, dword [esi + edx + 0xc]
mov dword [eax], ecx
xor eax, eax
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x848]
inc edx
mov dword [0x56e75c], edx
mov eax, 0xffffffff
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov ebp, dword [esp + 0x828]
mov dword [esp + 0x838], ecx
mov dword [esp + 0x848], ebx
mov ebx, dword [esp + 0x820]
mov eax, dword [esp + 0x848]
mov edx, dword [ebp + eax*4]
mov dword [esp + 0x840], edx
cmp dword [esp + 0x840], 0
je 0x4216da
mov edi, edx
mov esi, 0x5428c8
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x42138a
test dl, dl
je 0x421386
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x42138a
add edi, 2
add esi, 2
test dl, dl
jne 0x42136a
xor eax, eax
jmp 0x42138f
sbb eax, eax
or eax, 1
test eax, eax
jne 0x420f5e
mov edx, dword [esp + 0x838]
mov eax, edx
sar eax, 1
neg edx
dec edx
cmp edx, 0x40
jle 0x421436
test eax, eax
jle 0x4214d9
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
test ebx, ebx
jbe 0x42163c
mov edi, dword [esp + 0x83c]
mov edx, dword [esp + 0x838]
mov dword [esp + 0x814], eax
mov dword [esp + 0x828], ebp
xor esi, esi
lea edi, [ebp + edi*4]
lea ecx, [edi + edx*4]
xor edx, edx
mov ebp, dword [edi + esi*8]
mov eax, dword [ecx + edx*4 - 4]
mov dword [edi + esi*8], eax
mov eax, dword [ecx + edx*4 - 8]
mov dword [ecx + edx*4 - 4], ebp
mov ebp, dword [edi + esi*8 + 4]
mov dword [edi + esi*8 + 4], eax
inc esi
mov dword [ecx + edx*4 - 8], ebp
add edx, 0xfffffffe
cmp esi, ebx
jb 0x4213ee
mov eax, dword [esp + 0x814]
mov ebp, dword [esp + 0x828]
lea edx, [esi + esi + 1]
lea ecx, [edx - 1]
cmp eax, ecx
ja 0x4214b5
jmp 0x4214d9
test eax, eax
jle 0x4214d9
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
test ebx, ebx
jbe 0x421646
mov edi, dword [esp + 0x83c]
mov edx, dword [esp + 0x838]
mov dword [esp + 0x814], eax
mov dword [esp + 0x828], ebp
xor esi, esi
lea edi, [ebp + edi*4]
lea ecx, [edi + edx*4]
xor edx, edx
mov ebp, dword [edi + esi*8]
mov eax, dword [ecx + edx*4 - 4]
mov dword [edi + esi*8], eax
mov eax, dword [ecx + edx*4 - 8]
mov dword [ecx + edx*4 - 4], ebp
mov ebp, dword [edi + esi*8 + 4]
mov dword [edi + esi*8 + 4], eax
inc esi
mov dword [ecx + edx*4 - 8], ebp
add edx, 0xfffffffe
cmp esi, ebx
jb 0x421476
mov eax, dword [esp + 0x814]
mov ebp, dword [esp + 0x828]
lea edx, [esi + esi + 1]
lea ecx, [edx - 1]
cmp eax, ecx
jbe 0x4214d9
mov eax, dword [esp + 0x83c]
lea esi, [ebp + eax*4]
mov ebx, dword [esi + edx*4 - 4]
mov edi, edx
neg edi
add edi, dword [esp + 0x838]
mov ecx, dword [esi + edi*4]
mov dword [esi + edx*4 - 4], ecx
mov dword [esi + edi*4], ebx
mov edx, dword [esp + 0x838]
lea eax, [edx + 1]
sar eax, 1
neg edx
add edx, 0xfffffffe
cmp edx, 0x40
jle 0x421579
test eax, eax
jle 0x42161e
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
test ebx, ebx
jbe 0x421650
mov edi, dword [esp + 0x83c]
mov edx, dword [esp + 0x838]
mov dword [esp + 0x814], eax
mov dword [esp + 0x828], ebp
xor esi, esi
lea edi, [ebp + edi*4]
lea ecx, [edi + edx*4]
xor edx, edx
mov ebp, dword [edi + esi*8]
mov eax, dword [ecx + edx*4]
mov dword [edi + esi*8], eax
mov eax, dword [ecx + edx*4 - 4]
mov dword [ecx + edx*4], ebp
mov ebp, dword [edi + esi*8 + 4]
mov dword [edi + esi*8 + 4], eax
inc esi
mov dword [ecx + edx*4 - 4], ebp
add edx, 0xfffffffe
cmp esi, ebx
jb 0x421533
mov eax, dword [esp + 0x814]
mov ebp, dword [esp + 0x828]
lea edx, [esi + esi + 1]
lea ecx, [edx - 1]
cmp eax, ecx
ja 0x4215f6
jmp 0x42161e
test eax, eax
jle 0x42161e
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
test ebx, ebx
jbe 0x42165a
mov edi, dword [esp + 0x83c]
mov edx, dword [esp + 0x838]
mov dword [esp + 0x814], eax
mov dword [esp + 0x828], ebp
xor esi, esi
lea edi, [ebp + edi*4]
lea ecx, [edi + edx*4]
xor edx, edx
mov ebp, dword [edi + esi*8]
mov eax, dword [ecx + edx*4]
mov dword [edi + esi*8], eax
mov eax, dword [ecx + edx*4 - 4]
mov dword [ecx + edx*4], ebp
mov ebp, dword [edi + esi*8 + 4]
mov dword [edi + esi*8 + 4], eax
inc esi
mov dword [ecx + edx*4 - 4], ebp
add edx, 0xfffffffe
cmp esi, ebx
jb 0x4215b9
mov eax, dword [esp + 0x814]
mov ebp, dword [esp + 0x828]
lea edx, [esi + esi + 1]
lea ecx, [edx - 1]
cmp eax, ecx
jbe 0x42161e
mov eax, dword [esp + 0x83c]
mov edi, dword [esp + 0x838]
lea esi, [ebp + eax*4]
mov ebp, dword [esi + edx*4 - 4]
mov ecx, edx
neg ecx
add edi, ecx
mov ebx, dword [esi + edi*4 + 4]
mov dword [esi + edx*4 - 4], ebx
mov dword [esi + edi*4 + 4], ebp
mov edx, dword [esp + 0x83c]
inc edx
mov dword [0x56e75c], edx
mov eax, 0xffffffff
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, 1
jmp 0x421426
mov edx, 1
jmp 0x4214ae
mov edx, 1
jmp 0x421569
mov edx, 1
jmp 0x4215ef
mov edi, ebp
mov esi, 0x53f8c0
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x421688
test dl, dl
je 0x421684
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x421688
add edi, 2
add esi, 2
test dl, dl
jne 0x421668
xor eax, eax
jmp 0x42168d
sbb eax, eax
or eax, 1
test eax, eax
je 0x420ee6
lea esi, [esp + 0x818]
lea edx, [esp + 0xc]
xor eax, eax
mov dword [esp + 0x818], eax
push edx
push esi
push str._f_s
push ebp
mov dword [esp + 0x848], ecx
call dword [sym.imp.MSVCR80.dll_sscanf]
mov ecx, dword [esp + 0x848]
add esp, 0x10
cmp eax, 1
je 0x420ee6
movsx eax, byte [ebp]
jmp 0x420f16
mov edx, dword [esp + 0x83c]
mov dword [0x56e75c], edx
mov eax, 0xffffffff
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
cmp dword [0x55b6a4], 0
mov ebp, dword [esp + 0x828]
mov dword [esp + 0x814], esi
mov esi, dword [esp + 0x824]
je 0x42174e
call dword [sym.imp.MSVCR80.dll___iob_func]
mov edx, dword [esp + 0x814]
mov ecx, dword [esp + 0x86c]
push dword [edx + ecx]
add eax, 0x40
shl esi, 4
push dword [esi + ecx]
push dword [esp + 0x848]
push dword [ebp]
push str._s:_option___s_is_ambiguous__could_be_____s_or_____s__n
push eax
call dword [sym.imp.MSVCR80.dll_fprintf]
add esp, 0x18
mov dword [0x55b6a8], 0x3f
mov eax, 0x3f
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x81c]
mov ebx, dword [esp + 0x820]
mov ebp, dword [esp + 0x828]
mov esi, edi
jmp 0x421114
movsx eax, byte [pe_dos_header]
push eax
push str.__c_n
push ebx
call dword [sym.imp.MSVCR80.dll_fprintf]
jmp 0x4211c5
mov edx, dword [esp + 0x82c]
mov eax, dword [esp + 0x840]
inc edx
movsx ecx, byte [eax + edx]
mov dword [esp + 0x82c], edx
test ecx, ecx
je 0x42121c
mov eax, edx
mov dword [0x56c028], eax
jmp 0x421231
mov edx, dword [esp + 0x840]
mov ecx, edx
and edx, 0xfffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [edx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x4217f6
mov eax, edx
add edx, ecx
call fcn.00425520
mov edx, dword [esp + 0x840]
add edx, eax
sub eax, dword [esp + 0x82c]
jmp 0x421045
mov edx, dword [esp + 0x86c]
mov eax, dword [esi + edx + 0xc]
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [0x55b6a8]
add esp, 0x84c
pop ebx
pop ebp
pop esi
pop edi
ret