Function at 0x404b90
Capabilities:
Encode data using base64
Query environment variable
Write file on windows

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
mov ecx, 0x43
push edi
push esi
push ebx
lea edi, [ebp - 0x924]
sub esp, 0x98c
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ebp - 0x924], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov dword [ebp - 0x920], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], 0x404b80
mov dword [esp], str.options
mov dword [esp + 8], eax
call sym.brltty.exe_onProgramExit
lea eax, [ebp - 0x91c]
lea edx, [ebp - 0x81c]
lea esi, [esi]
mov byte [eax], 0
add eax, 1
cmp eax, edx
jne 0x404bf0
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [esp], eax
call sym.brltty.exe_beginProgram
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x920]
mov dword [ebp - 0x968], esp
mov eax, dword [eax + 0x18]
lea ecx, [edx + edx + 2]
mov dword [ebp - 0x970], eax
lea eax, [ecx + 0xf]
and eax, 0xfffffff0
call fcn.0046d550
sub esp, eax
lea eax, [esp + 0x1c]
mov dword [ebp - 0x964], eax
mov eax, ecx
shl eax, 4
call fcn.0046d550
sub esp, eax
lea eax, [esp + 0x1f]
mov dword [ebp - 0x95c], eax
shr dword [ebp - 0x95c], 2
mov eax, dword [ebp - 0x95c]
shl eax, 2
test edx, edx
mov dword [ebp - 0x974], eax
mov dword [ebp - 0x96c], eax
je 0x405ee5
xor ecx, ecx
mov esi, eax
mov edi, ecx
jmp 0x404cba
mov dword [esi], eax
mov eax, dword [ebx + 4]
xor edx, edx
mov dword [esi + 8], 0
test eax, eax
setne dl
test eax, eax
mov dword [esi + 4], edx
movzx edx, byte [ebx + 0x14]
mov dword [esi + 0xc], edx
lea edx, [esi + 0x10]
je 0x404d7d
add edi, 1
cmp edi, dword [ebp - 0x920]
jae 0x404cd8
mov esi, edx
mov ebx, edi
shl ebx, 5
add ebx, dword [ebp - 0x924]
mov eax, dword [ebx]
test eax, eax
jne 0x404c85
add edi, 1
mov edx, esi
cmp edi, dword [ebp - 0x920]
jb 0x404cb8
mov edi, edx
mov dword [edi], 0
lea eax, [ebp - 0x818]
mov dword [edi + 4], 0
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
nop
lea esi, [esi]
mov dword [eax], 0
lea edi, [ebp - 0x418]
add eax, 4
cmp eax, edi
jne 0x404d00
mov esi, dword [ebp - 0x920]
mov eax, dword [ebp - 0x964]
test esi, esi
lea ecx, [eax + 1]
mov byte [eax], 0x2b
je 0x404e47
xor edx, edx
jmp 0x404d56
lea ebx, [ecx + 2]
mov byte [ecx + 1], 0x3a
mov eax, dword [eax + 0x18]
test eax, eax
je 0x404d45
mov dword [eax], 0
add edx, 1
cmp edx, dword [ebp - 0x920]
jae 0x404e49
mov ecx, ebx
mov eax, edx
shl eax, 5
add eax, dword [ebp - 0x924]
movzx ebx, byte [eax + 0x14]
movzx esi, bl
mov dword [ebp + esi*4 - 0x818], eax
mov byte [ecx], bl
mov ebx, dword [eax + 4]
test ebx, ebx
jne 0x404d31
lea ebx, [ecx + 1]
jmp 0x404d38
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x404cad
mov dword [ebp - 0x93c], edx
mov dword [esp + 8], 3
mov eax, dword [ebx]
mov dword [esp], 0x4764ec
mov dword [esp + 4], eax
call sub.msvcrt.dll__strnicmp
mov edx, dword [ebp - 0x93c]
test eax, eax
je 0x4052ad
mov eax, dword [ebx]
mov dword [ebp - 0x944], edx
mov dword [ebp - 0x93c], eax
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea ecx, [eax + 4]
mov dword [ebp - 0x940], ecx
mov dword [esp], ecx
call sub.msvcrt.dll_malloc
mov edx, dword [ebp - 0x944]
test eax, eax
mov ecx, eax
je 0x4052ca
mov eax, dword [ebp - 0x93c]
mov dword [esp + 0xc], 0x4764ec
mov dword [esp + 8], 0x4764f0
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x940]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [ebp - 0x93c], ecx
call fcn.0046e270
mov ecx, dword [ebp - 0x93c]
lea eax, [ebp - 0x938]
mov dword [esi + 0x10], ecx
lea edx, [esi + 0x20]
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], eax
movzx eax, byte [ebx + 0x14]
mov dword [esi + 0x1c], eax
jmp 0x404cad
mov ebx, ecx
mov eax, dword [ebp + 0xc]
mov byte [ebx], 0
cmp dword [eax], 1
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
mov esi, ecx
jle 0x405996
mov eax, dword [ecx + 4]
cmp byte [eax], 0x2f
sete al
movzx eax, al
mov dword [ebp - 0x940], eax
mov eax, dword [ebp + 0xc]
mov ebx, 1
mov dword [0x475910], 0
mov dword [0x475914], 1
mov dword [ebp - 0x954], 0
mov eax, dword [eax]
mov dword [ebp - 0x948], 0
mov dword [ebp - 0x944], 0
mov dword [ebp - 0x960], 0xffffffff
cmp ebx, eax
je 0x405001
mov edi, dword [ebp - 0x940]
mov edx, dword [ecx + ebx*4]
test edi, edi
je 0x404fc7
add ebx, 1
mov dword [0x475914], ebx
cmp byte [edx], 0x2f
je 0x40507e
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x10]
lea edx, [esi + ebx*4]
sub eax, ebx
mov dword [ecx], edx
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
mov eax, dword [ebp - 0x948]
test eax, eax
jne 0x405442
mov eax, dword [ebp - 0x95c]
mov ebx, dword [ebp - 0x96c]
mov eax, dword [eax*4]
test eax, eax
je 0x404f38
nop
lea esi, [esi]
mov ecx, dword [ebx + 8]
test ecx, ecx
je 0x404f2f
mov dword [esp], eax
call sub.msvcrt.dll_free
add ebx, 0x10
mov eax, dword [ebx]
test eax, eax
jne 0x404f20
mov eax, dword [ebp + 8]
mov esp, dword [ebp - 0x968]
mov eax, dword [eax + 8]
test eax, eax
je 0x404f52
mov edx, dword [eax]
test edx, edx
jne 0x4059c2
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x404f66
mov eax, dword [eax]
test eax, eax
jne 0x405a97
xor edx, edx
lea eax, [ebp - 0x924]
call fcn.00404a30
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x404f97
mov edi, dword [eax]
test edi, edi
je 0x404f97
mov dword [esp], 0
call sym.brltty.exe_setBaseDataVariables
test eax, eax
jne 0x405c17
mov edx, 1
lea eax, [ebp - 0x924]
call fcn.00404a30
movzx edx, byte [ebp - 0x81c]
mov eax, 1
test dl, 1
jne 0x404fbf
mov eax, edx
shr eax, 1
and eax, 2
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, dword [ebp - 0x944]
test edi, edi
je 0x40520f
movsx edx, byte [edi]
mov eax, edi
add eax, 1
test edx, edx
jne 0x405008
mov eax, dword [ebp + 0xc]
add ebx, 1
mov dword [0x475914], ebx
mov dword [ebp - 0x944], 0
mov eax, dword [eax]
cmp ebx, eax
jne 0x404ebf
mov ebx, eax
jmp 0x404ee7
mov ebx, dword [ebp + edx*4 - 0x818]
test ebx, ebx
je 0x40501e
mov esi, dword [ebx + 4]
test esi, esi
je 0x405426
mov dword [0x47590c], edx
mov ebx, 0x2b
mov dword [ebp - 0x944], eax
mov eax, dword [0x47590c]
test eax, eax
je 0x4051db
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], str.unknown_option
mov dword [esp + 4], str._s:__c_c
mov dword [esp], 3
call sym.brltty.exe_logMessage
or byte [ebp - 0x81c], 4
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ebx, dword [0x475914]
mov ecx, dword [ecx]
mov eax, dword [eax]
mov esi, ecx
jmp 0x404eb7
lea eax, [edx + 1]
mov dword [ebp - 0x958], edx
mov esi, eax
mov dword [ebp - 0x94c], eax
mov dword [esp + 4], 0x4764f5
mov dword [esp], eax
call sub.msvcrt.dll_strcspn
mov dword [ebp - 0x93c], eax
mov edi, eax
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov edx, edi
lea ecx, [esi + edx + 1]
cmp edi, eax
mov edi, 0
cmove ecx, edi
cmp edx, 1
mov edx, dword [ebp - 0x958]
mov dword [ebp - 0x950], ecx
je 0x4053cd
mov ebx, dword [ebp - 0x920]
mov edi, dword [ebp - 0x924]
test ebx, ebx
jne 0x4050fc
jmp 0x4051b5
add edi, 0x20
sub ebx, 1
je 0x4051b5
mov esi, dword [edi]
test esi, esi
je 0x4050f0
mov dword [esp], esi
call sub.msvcrt.dll_strlen
cmp dword [ebp - 0x93c], eax
jne 0x4050f0
mov eax, dword [ebp - 0x93c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x94c]
mov dword [esp], esi
mov dword [esp + 4], eax
call sub.msvcrt.dll__strnicmp
test eax, eax
jne 0x4050f0
mov edx, dword [edi + 4]
movzx esi, byte [edi + 0x14]
mov dword [0x4c03ec], 0
mov eax, dword [ebp - 0x950]
test edx, edx
mov dword [0x47590c], esi
jne 0x405401
test eax, eax
je 0x406014
mov edi, dword [edi + 0x18]
test edi, edi
je 0x405f8c
mov dword [esp + 4], 0x4764a8
mov ebx, 0x2f
mov dword [esp], eax
call sub.msvcrt.dll__stricmp
test eax, eax
je 0x405255
mov dword [esp + 4], 0x4764ab
mov eax, dword [ebp - 0x950]
mov dword [esp], eax
call sub.msvcrt.dll__stricmp
test eax, eax
jne 0x40502f
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x938], esi
mov ecx, dword [eax]
jmp 0x40533e
mov dword [0x47590c], 0
mov eax, dword [0x47590c]
mov ebx, 0x2f
mov dword [0x4c03ec], 0
test eax, eax
jne 0x40503c
mov eax, dword [ebp + 0x10]
mov edx, dword [0x475914]
mov eax, dword [eax]
mov eax, dword [eax + edx*4 - 4]
mov dword [esp + 8], str.unknown_option
mov dword [esp + 4], 0x4764c4
mov dword [esp], 3
mov dword [esp + 0xc], eax
call sym.brltty.exe_logMessage
jmp 0x405060
cmp dword [ebp - 0x960], ebx
je 0x405220
cmp byte [edx], 0x2b
je 0x405e93
mov dword [esp + 0x10], 0
mov edx, dword [ebp - 0x974]
mov dword [esp + 0xc], edx
mov edx, dword [ebp - 0x964]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], edx
call fcn.0046eea0
mov dword [ebp - 0x960], ebx
mov ebx, 0x2d
mov esi, eax
cmp esi, 0xffffffff
je 0x40601e
cmp esi, 0x3f
je 0x40502f
jg 0x4052e0
test esi, esi
nop
lea esi, [esi]
je 0x405339
cmp esi, 0x3a
jne 0x40530f
mov eax, dword [0x47590c]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], str.missing_operand
mov dword [esp + 4], str._s:__c_c
mov dword [esp + 0x10], eax
mov dword [esp], 3
call sym.brltty.exe_logMessage
jmp 0x405060
mov eax, dword [ebx]
add eax, 3
mov dword [esp], eax
call sub.msvcrt.dll__strdup
mov edx, dword [ebp - 0x93c]
test eax, eax
mov ecx, eax
jne 0x404e25
mov dword [ebp - 0x93c], edx
call sym.brltty.exe_logMallocError
mov edx, dword [ebp - 0x93c]
jmp 0x404cad
cmp esi, 0x48
je 0x405374
cmp esi, 0x68
jne 0x40530f
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ebx, dword [0x475914]
mov dword [ebp - 0x948], 1
mov ecx, dword [ecx]
mov eax, dword [eax]
mov esi, ecx
jmp 0x404eb7
mov eax, dword [ebp + esi*4 - 0x818]
mov edx, dword [eax + 4]
test edx, edx
je 0x4059a5
mov edx, dword [0x4c03ec]
cmp byte [edx], 0
jne 0x40539f
mov byte [ebp + esi - 0x91c], 0
jmp 0x405067
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
mov eax, dword [ebp - 0x938]
mov esi, ecx
mov eax, dword [ebp + eax*4 - 0x818]
mov eax, dword [eax + 0x18]
mov dword [eax], 0
mov eax, dword [ebp - 0x938]
mov ebx, dword [0x475914]
mov byte [ebp + eax - 0x91c], 1
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
jmp 0x404eb7
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ebx, dword [0x475914]
mov dword [ebp - 0x954], 1
mov ecx, dword [ecx]
mov eax, dword [eax]
mov dword [ebp - 0x948], 1
mov esi, ecx
jmp 0x404eb7
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x4053c0
test byte [eax + 0x16], 2
je 0x405418
mov dword [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], ecx
call sym.brltty.exe_extendStringSetting
mov byte [ebp + esi - 0x91c], 1
jmp 0x405067
movsx esi, byte [edx + 1]
mov dword [0x4c03ec], 0
mov edi, dword [ebp + esi*4 - 0x818]
mov dword [0x47590c], esi
test edi, edi
je 0x405f8c
mov edx, dword [edi + 4]
mov eax, dword [ebp - 0x950]
test edx, edx
je 0x405157
test eax, eax
mov ebx, 0x2f
mov dword [0x4c03ec], eax
jne 0x405255
jmp 0x40527f
mov dword [esp + 4], edx
mov dword [esp], ecx
call sym.brltty.exe_changeStringSetting
jmp 0x4053c0
mov ebx, dword [ebx + 0x18]
test ebx, ebx
je 0x40501e
mov dword [ebp - 0x938], edx
mov dword [ebp - 0x944], eax
jmp 0x40533e
mov eax, 0x50
mov dword [ebp - 0x978], esp
call fcn.0046d550
sub esp, eax
mov eax, dword [ebp - 0x920]
lea ecx, [esp + 0x1c]
test eax, eax
je 0x405fc7
mov ebx, dword [ebp - 0x924]
shl eax, 5
xor esi, esi
mov dword [ebp - 0x940], ecx
lea edi, [eax + ebx]
xor eax, eax
mov dword [ebp - 0x93c], edi
mov edi, eax
jmp 0x4054ba
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [ebx + 4]
test edx, edx
lea ecx, [eax + 1]
cmovne eax, ecx
cmp esi, eax
cmovb esi, eax
test edx, edx
je 0x4054af
mov dword [esp], edx
call sub.msvcrt.dll_strlen
cmp edi, eax
cmovb edi, eax
add ebx, 0x20
cmp ebx, dword [ebp - 0x93c]
je 0x4054c5
mov eax, dword [ebx]
test eax, eax
jne 0x405486
mov edx, dword [ebx + 4]
jmp 0x40549e
mov ecx, dword [ebp - 0x940]
mov dword [ebp - 0x960], edi
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [ebp - 0x93c], ecx
mov dword [esp + 8], 5
mov dword [esp + 4], 1
lea ebx, [eax + 0x20]
mov dword [esp + 0xc], ebx
mov dword [esp], str.Usage
call sub.msvcrt.dll_fwrite
mov eax, dword [sym.brltty.exe_programName]
mov dword [esp + 4], str.:__s
mov dword [esp], ebx
mov dword [esp + 8], eax
call sub.msvcrt.dll_fprintf
mov edi, dword [ebp - 0x920]
mov ecx, dword [ebp - 0x93c]
test edi, edi
jne 0x405ef0
mov eax, dword [ebp - 0x970]
test eax, eax
je 0x40553f
cmp byte [eax], 0
jne 0x405eb8
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [ebp - 0x93c], ecx
mov dword [esp], 0xa
add eax, 0x20
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov eax, dword [ebp - 0x960]
mov dword [ebp - 0x950], 0
mov ecx, dword [ebp - 0x93c]
add eax, 3
mov dword [ebp - 0x958], eax
lea eax, [esi + 2]
mov esi, dword [ebp - 0x920]
mov dword [ebp - 0x964], eax
test esi, esi
je 0x4057d5
mov edi, dword [ebp - 0x950]
mov ebx, dword [ebp - 0x954]
shl edi, 5
add edi, dword [ebp - 0x924]
test ebx, ebx
jne 0x4055b6
test byte [edi + 0x16], 1
jne 0x4057bc
mov byte [ecx], 0x2d
movzx eax, byte [edi + 0x14]
mov byte [ecx + 2], 0x20
mov edx, dword [ebp - 0x958]
mov byte [ecx + 1], al
mov ebx, dword [edi + 4]
test ebx, ebx
je 0x40586a
mov dword [ebp - 0x940], edx
mov dword [ebp - 0x93c], ecx
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
mov ecx, dword [ebp - 0x93c]
mov dword [esp + 4], ebx
mov esi, eax
lea eax, [ecx + 3]
mov dword [esp + 8], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov ebx, dword [ebp - 0x958]
lea eax, [esi + 3]
add esi, 4
mov ecx, dword [ebp - 0x93c]
mov edx, dword [ebp - 0x940]
cmp ebx, eax
jbe 0x405882
add eax, 1
cmp ebx, eax
mov byte [ecx + eax - 1], 0x20
jne 0x405624
mov eax, dword [ebp - 0x960]
lea esi, [eax + 4]
mov eax, dword [ebp - 0x964]
mov byte [ecx + edx], 0x20
mov dword [ebp - 0x940], edx
lea ebx, [eax + esi]
mov eax, dword [edi]
test eax, eax
je 0x4056c0
mov dword [ebp - 0x944], ecx
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov ecx, dword [ebp - 0x944]
mov edx, dword [ebp - 0x940]
mov byte [ecx + esi], 0x2d
lea esi, [edx + 3]
mov dword [ebp - 0x93c], eax
lea eax, [ecx + esi]
mov byte [ecx + edx + 2], 0x2d
mov edx, dword [edi]
mov dword [ebp - 0x940], ecx
mov ecx, dword [ebp - 0x93c]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [edi + 4]
mov ecx, dword [ebp - 0x93c]
test edx, edx
lea eax, [ecx + esi]
mov ecx, dword [ebp - 0x940]
je 0x405c06
lea esi, [eax + 1]
mov byte [ecx + eax], 0x3d
cmp ebx, esi
jbe 0x405c10
add esi, 1
cmp esi, ebx
mov byte [ecx + esi - 1], 0x20
jne 0x4056c8
mov byte [ecx + ebx], 0x20
lea edx, [ebx + 2]
mov byte [ecx + ebx + 1], 0x20
mov esi, dword [edi + 8]
movzx eax, byte [edi + 0x16]
mov dword [ebp - 0x93c], 0x4d
sub dword [ebp - 0x93c], ebx
mov ebx, 0x4764e3
shr al, 4
test esi, esi
cmove esi, ebx
and eax, 1
mov dword [ebp - 0x940], eax
mov eax, dword [edi + 0x1c]
test eax, eax
setne al
test al, al
jne 0x405889
mov dword [ebp - 0x944], ecx
mov dword [ebp - 0x940], edx
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov edx, dword [ebp - 0x940]
mov ecx, dword [ebp - 0x944]
mov edi, eax
lea eax, [ecx + edx]
mov dword [ebp - 0x940], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [ebp - 0x94c], eax
cmp dword [ebp - 0x93c], edi
jae 0x4057b4
nop
mov eax, dword [ebp - 0x93c]
test eax, eax
je 0x405984
cmp byte [esi + eax], 0x20
je 0x40598b
mov ebx, eax
jmp 0x405786
cmp byte [esi + ebx], 0x20
je 0x4057fc
sub ebx, 1
jne 0x405780
cmp edi, ebx
ja 0x4057ee
nop
sub edi, ebx
test edi, edi
je 0x4057bc
add esi, ebx
test edx, edx
je 0x405756
xor eax, eax
nop
add eax, 1
cmp edx, eax
mov byte [ecx + eax - 1], 0x20
jne 0x4057a0
cmp dword [ebp - 0x93c], edi
jb 0x405760
test edi, edi
jne 0x405866
add dword [ebp - 0x950], 1
mov eax, dword [ebp - 0x950]
cmp eax, dword [ebp - 0x920]
jb 0x405593
mov esp, dword [ebp - 0x978]
or byte [ebp - 0x81c], 1
jmp 0x404f04
add ebx, 1
cmp edi, ebx
jbe 0x405790
cmp byte [esi + ebx], 0x20
je 0x4057e7
jmp 0x405790
test eax, eax
mov ebx, eax
je 0x4057ea
cmp byte [esi + ebx - 1], 0x20
lea eax, [ebx - 1]
je 0x4057f6
mov dword [ebp - 0x948], edx
mov dword [ebp - 0x944], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x940]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x940]
mov ecx, dword [ebp - 0x944]
mov byte [eax + ebx], 0
mov dword [esp + 8], ecx
mov dword [ebp - 0x944], ecx
mov dword [esp + 4], 0x47653e
mov eax, dword [ebp - 0x94c]
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov ecx, dword [ebp - 0x944]
mov edx, dword [ebp - 0x948]
jmp 0x4057ea
mov ebx, edi
jmp 0x405806
mov ebx, dword [ebp - 0x958]
mov eax, 3
mov esi, 4
cmp ebx, eax
ja 0x405624
mov edx, eax
jmp 0x405639
lea eax, [ebp - 0x418]
xor ebx, ebx
mov dword [ebp - 0x94c], ecx
mov ecx, eax
mov dword [ebp - 0x970], esp
mov dword [ebp - 0x948], edx
mov eax, dword [ebp - 0x940]
test eax, eax
jne 0x40594c
mov eax, dword [edi + 0x1c]
mov edx, dword [eax + ebx*4]
test edx, edx
je 0x405f5b
add ebx, 1
cmp ebx, 4
mov dword [ebp + ebx*4 - 0x938], edx
jne 0x4058a5
mov edi, ecx
mov edx, dword [ebp - 0x948]
mov ecx, dword [ebp - 0x94c]
lea eax, [ebp - 0x18]
sub eax, edi
mov dword [ebp - 0x944], eax
mov eax, dword [ebp - 0x928]
mov dword [ebp - 0x948], ecx
mov dword [ebp - 0x940], edx
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x92c]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x930]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x934]
mov dword [esp + 8], esi
mov esi, edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x944]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.0046e270
mov esp, dword [ebp - 0x970]
mov ecx, dword [ebp - 0x948]
mov edx, dword [ebp - 0x940]
jmp 0x40571d
lea eax, [ebp - 0x18]
sub eax, ecx
mov dword [ebp - 0x944], eax
mov dword [esp], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [ebp - 0x974], ecx
call dword [edi + 0x1c]
mov ecx, dword [ebp - 0x974]
test eax, eax
je 0x405f96
mov edx, ecx
lea ecx, [ecx + eax + 1]
jmp 0x4058b9
xor ebx, ebx
jmp 0x4057ea
mov ebx, dword [ebp - 0x93c]
jmp 0x4057fc
mov dword [ebp - 0x940], 0
jmp 0x404e71
mov edx, dword [eax + 0x18]
test edx, edx
je 0x4053c0
test byte [eax + 0x16], 2
je 0x405ead
add dword [edx], 1
jmp 0x4053c0
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x14]
mov dword [esp], ebx
call sym.brltty.exe_getBootParameters
mov edi, eax
test edi, edi
je 0x405fb2
lea ecx, [ebp - 0x418]
xor ebx, ebx
mov dword [ebp - 0x418], 0
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x2c
mov dword [esp], eax
call sym.brltty.exe_splitString
mov dword [ebp - 0x93c], eax
mov eax, dword [ebp - 0x920]
test eax, eax
je 0x405a74
mov esi, ebx
shl esi, 5
add esi, dword [ebp - 0x924]
movzx eax, byte [esi + 0x15]
test al, al
je 0x405a69
cmp eax, dword [ebp - 0x418]
jg 0x405a69
mov ecx, dword [ebp - 0x93c]
mov ecx, dword [ecx + eax*4 - 4]
movzx edx, byte [ecx]
test dl, dl
je 0x405a69
mov eax, ecx
jmp 0x405a4a
add eax, 1
movzx edx, byte [eax]
test dl, dl
je 0x405a5c
cmp dl, 0x2b
jne 0x405a40
mov byte [eax], 0x2c
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x405a4a
mov edx, esi
lea eax, [ebp - 0x924]
call fcn.004048b0
add ebx, 1
cmp ebx, dword [ebp - 0x920]
jb 0x405a10
mov eax, dword [ebp - 0x93c]
mov dword [esp], eax
call sym.brltty.exe_deallocateStrings
test edi, edi
je 0x404f52
mov dword [esp], edi
call sub.msvcrt.dll_free
jmp 0x404f52
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x940], eax
mov eax, dword [ebp - 0x920]
test eax, eax
je 0x404f66
mov edi, dword [sym.imp.msvcrt.dll___mb_cur_max]
mov dword [ebp - 0x93c], 0
mov ebx, dword [ebp - 0x93c]
mov eax, dword [ebp - 0x940]
shl ebx, 5
add ebx, dword [ebp - 0x924]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
test byte [ebx + 0x16], 8
mov dword [ebp - 0x944], eax
je 0x405bca
mov esi, dword [ebx]
test esi, esi
je 0x405bca
mov dword [ebp - 0x948], esp
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov ecx, dword [ebp - 0x944]
lea ecx, [ecx + eax + 2]
lea eax, [ecx + 0xf]
and eax, 0xfffffff0
call fcn.0046d550
sub esp, eax
lea edx, [esp + 0x1c]
mov dword [ebp - 0x944], edx
mov dword [esp + 0x10], esi
mov eax, dword [ebp - 0x940]
mov esi, edx
mov dword [esp + 8], 0x476542
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 0xc], eax
call fcn.0046e270
movzx eax, byte [esp + 0x1c]
test al, al
jne 0x405b83
jmp 0x405bad
mov ecx, dword [sym.imp.msvcrt.dll__pctype]
mov edx, dword [ecx]
movzx eax, word [edx + eax*2]
and eax, 2
movzx eax, ax
test eax, eax
je 0x405b79
movzx eax, byte [esi]
mov dword [esp], eax
call sub.msvcrt.dll_toupper
mov byte [esi], al
add esi, 1
movzx eax, byte [esi]
test al, al
je 0x405bad
cmp al, 0x2d
je 0x405ba0
cmp dword [edi], 1
je 0x405b56
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.msvcrt.dll__isctype
jmp 0x405b68
mov byte [esi], 0x5f
add esi, 1
movzx eax, byte [esi]
test al, al
jne 0x405b83
mov eax, dword [ebp - 0x944]
mov dword [esp], eax
call sub.msvcrt.dll_getenv
test eax, eax
je 0x405bc4
cmp byte [eax], 0
jne 0x405be8
mov esp, dword [ebp - 0x948]
add dword [ebp - 0x93c], 1
mov eax, dword [ebp - 0x93c]
cmp eax, dword [ebp - 0x920]
jb 0x405ac1
jmp 0x404f66
mov ecx, eax
mov edx, ebx
lea eax, [ebp - 0x924]
call fcn.004048b0
test eax, eax
jne 0x405bc4
mov esp, dword [ebp - 0x948]
jmp 0x404f66
mov esi, eax
cmp ebx, esi
ja 0x4056c8
mov ebx, esi
jmp 0x4056d4
mov dword [esp + 8], 0
mov dword [esp + 4], 0x476548
mov dword [esp], edi
call sym.brltty.exe_openDataFile
test eax, eax
mov dword [ebp - 0x93c], eax
je 0x405fa6
mov edx, dword [ebp - 0x920]
mov dword [ebp - 0x940], esp
lea ecx, [edx*4]
lea eax, [ecx + 0x12]
and eax, 0xfffffff0
call fcn.0046d550
sub esp, eax
lea eax, [ecx + 0x12]
lea ebx, [esp + 0x1c]
and eax, 0xfffffff0
call fcn.0046d550
sub esp, eax
test edx, edx
lea eax, [esp + 0x1c]
lea ecx, [ebp - 0x924]
mov dword [ebp - 0x418], ecx
mov dword [ebp - 0x414], ebx
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x40c], 0
je 0x405d59
xor ebx, ebx
mov edx, ecx
mov eax, ebx
shl eax, 5
add eax, dword [edx]
test byte [eax + 0x16], 4
je 0x405d3b
mov esi, dword [eax]
test esi, esi
je 0x405d3b
mov dword [esp], esi
call sym.brltty.exe_getUtf8Length
mov ecx, eax
lea eax, [eax + eax + 6]
mov dword [ebp - 0x944], ecx
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov ecx, dword [ebp - 0x944]
test eax, eax
mov edx, eax
je 0x405fd8
mov dword [eax], ebx
lea eax, [eax + 4]
add ecx, 1
mov dword [ebp - 0x818], eax
lea eax, [ebp - 0x818]
mov dword [ebp - 0x944], edx
mov dword [ebp - 0x934], esi
mov dword [esp + 4], eax
lea eax, [ebp - 0x934]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sym.brltty.exe_convertUtf8ToWchars
mov eax, dword [ebp - 0x40c]
mov edx, dword [ebp - 0x944]
lea ecx, [eax + 1]
mov dword [ebp - 0x40c], ecx
mov ecx, dword [ebp - 0x410]
mov dword [ecx + eax*4], edx
mov edx, dword [ebp - 0x418]
add ebx, 1
cmp ebx, dword [edx + 4]
jb 0x405ca0
mov edx, dword [ebp - 0x40c]
mov eax, dword [ebp - 0x410]
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0xc], 0x404780
mov dword [esp + 8], 4
call sub.msvcrt.dll_qsort
mov edx, dword [ebp - 0x920]
xor eax, eax
test edx, edx
je 0x405d95
mov ecx, dword [ebp - 0x414]
mov dword [ecx + eax*4], 0
add eax, 1
cmp eax, edx
jne 0x405d81
lea eax, [ebp - 0x418]
xor ebx, ebx
mov dword [ebp - 0x814], eax
lea eax, [ebp - 0x818]
mov dword [ebp - 0x810], 0
mov dword [ebp - 0x818], 0x404570
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov eax, dword [ebp - 0x93c]
mov dword [esp], 0
mov dword [esp + 4], eax
call sym.brltty.exe_processDataStream
mov dword [ebp - 0x944], eax
mov eax, dword [ebp - 0x920]
test eax, eax
je 0x405e23
mov eax, dword [ebp - 0x414]
mov esi, dword [eax + ebx*4]
test esi, esi
je 0x405e18
mov edx, ebx
mov ecx, esi
shl edx, 5
add edx, dword [ebp - 0x924]
lea eax, [ebp - 0x924]
call fcn.004048b0
mov dword [esp], esi
call sub.msvcrt.dll_free
add ebx, 1
cmp ebx, dword [ebp - 0x920]
jb 0x405deb
mov eax, dword [ebp - 0x944]
test eax, eax
jne 0x405e4c
mov dword [esp + 8], edi
mov dword [esp + 4], str.file__s_processing_error.
mov dword [esp], 3
call sym.brltty.exe_logMessage
or byte [ebp - 0x81c], 2
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x405e7a
mov edx, dword [ebp - 0x410]
sub eax, 1
mov dword [ebp - 0x40c], eax
mov eax, dword [edx + eax*4]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x40c]
test eax, eax
jne 0x405e56
mov eax, dword [ebp - 0x93c]
mov dword [esp], eax
call sub.msvcrt.dll_fclose
mov esp, dword [ebp - 0x940]
jmp 0x404f97
add edx, 1
je 0x405220
mov dword [ebp - 0x944], edx
mov dword [ebp - 0x960], ebx
jmp 0x404eb7
mov dword [edx], 1
jmp 0x4053c0
mov dword [ebp - 0x93c], ecx
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], 0x47653a
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov ecx, dword [ebp - 0x93c]
jmp 0x40553f
mov edi, dword [ebp - 0x974]
jmp 0x404cda
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 2
mov dword [esp + 4], 1
mov dword [esp], 0x47652a
call sub.msvcrt.dll_fwrite
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 6
mov dword [esp + 4], 1
mov dword [esp], str.option
call sub.msvcrt.dll_fwrite
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 5
mov dword [esp + 4], 1
mov dword [esp], str._..._
call sub.msvcrt.dll_fwrite
mov ecx, dword [ebp - 0x93c]
jmp 0x40552c
mov edi, ecx
mov edx, dword [ebp - 0x948]
mov ecx, dword [ebp - 0x94c]
lea eax, [ebp - 0x18]
sub eax, edi
mov dword [ebp - 0x944], eax
add ebx, 1
cmp ebx, 4
mov dword [ebp + ebx*4 - 0x938], 0x4764e3
jne 0x405f74
jmp 0x4058e9
mov ebx, 0x2f
jmp 0x40502f
mov edi, ecx
mov edx, dword [ebp - 0x948]
mov ecx, dword [ebp - 0x94c]
jmp 0x405f74
or byte [ebp - 0x81c], 2
jmp 0x404f97
mov dword [esp], ebx
call sub.msvcrt.dll_getenv
test eax, eax
jne 0x4059da
jmp 0x404f52
mov dword [ebp - 0x960], 0
xor esi, esi
jmp 0x4054d1
call sym.brltty.exe_logMallocError
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x405e7a
mov edx, dword [ebp - 0x410]
sub eax, 1
mov dword [ebp - 0x40c], eax
mov eax, dword [edx + eax*4]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x40c]
test eax, eax
jne 0x405feb
jmp 0x405e7a
mov ebx, 0x2f
jmp 0x405255
mov eax, dword [ebp + 0x10]
mov ebx, dword [0x475914]
mov esi, dword [eax]
jmp 0x404ee2