Function at 0x403100
Capabilities:
Accept command line arguments
Encode data using xor
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa00
call fcn.004342a0
mov ecx, str.kernel32.dll
xor edx, edx
call fcn.00401a50
test eax, eax
je 0x40318e
mov esi, eax
mov ebx, dword [eax]
push str.GetConsoleWindow
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test byte [esi + 4], 2
je 0x403150
push str.Unloading_a_library
call fcn.00410a40
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push esi
call sub.MSVCR70.dll_free
add esp, 4
test edi, edi
je 0x40318e
call edi
mov dword [esp + 0x1f0], 0
lea ecx, [esp + 0x1f0]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
cmp eax, dword [esp + 0x1f0]
jne 0x40318e
call dword [sym.imp.KERNEL32.dll_FreeConsole]
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea ecx, [ebp + 8]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [esp], eax
mov esi, dword [ebp + 8]
lea eax, [esi + 1]
push 4
push eax
call sub.MSVCR70.dll_calloc
add esp, 8
mov ebx, eax
inc esi
je 0x403b32
test ebx, ebx
je 0x408293
mov edi, dword [ebp + 8]
test edi, edi
mov dword [esp + 0x10], ebx
jle 0x403388
xor edi, edi
mov ebx, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov esi, dword [esp]
nop
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push dword [esi + edi*4]
push 0
push 0xfde9
call ebx
mov ebx, eax
push 1
push eax
call sub.MSVCR70.dll_calloc
add esp, 8
mov esi, eax
test ebx, ebx
je 0x403240
test esi, esi
je 0x408293
mov eax, dword [esp + 0x10]
mov dword [eax + edi*4], esi
push 0
push 0
push ebx
push esi
push 0xffffffffffffffff
mov esi, dword [esp + 0x14]
push dword [esi + edi*4]
push 0
push 0xfde9
mov ebx, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
call ebx
inc edi
mov eax, dword [ebp + 8]
cmp edi, eax
jl 0x4031e0
jmp 0x403256
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
test esi, esi
jne 0x403211
jmp 0x408293
cmp eax, 3
mov ebx, dword [esp + 0x10]
mov edi, eax
jl 0x4032ad
mov edx, dword [ebx + 4]
movzx ecx, byte [edx]
xor eax, eax
test cl, cl
je 0x403282
nop dword [eax]
cmp cl, byte [eax + str._user]
jne 0x403284
movzx ecx, byte [edx + eax + 1]
inc eax
test cl, cl
jne 0x403270
xor ecx, ecx
cmp cl, byte [eax + str._user]
jne 0x4032ad
push str.Userland_emulation_not_available__define_RVVM_USER_TEST
call fcn.00410c10
add esp, 4
mov edi, 0xffffffff
cmp dword [ebp + 8], 0
jg 0x4038bb
jmp 0x4038d8
mov dword [0x440164], edi
mov dword [0x440168], ebx
test edi, edi
jle 0x403394
mov eax, edi
neg eax
mov dl, 1
mov ecx, 1
jmp 0x4032e7
cmp ecx, edi
setl dl
lea esi, [eax + ecx + 1]
inc ecx
cmp esi, 1
mov ebx, dword [esp + 0x10]
je 0x4034dd
mov esi, dword [ebx + ecx*4 - 4]
test esi, esi
je 0x4034dd
cmp byte [esi], 0x2d
jne 0x4032d0
xor ebx, ebx
cmp byte [esi + 1], 0x2d
sete bl
cmp byte [esi + ebx + 1], 0x76
jne 0x4032d0
inc ebx
movzx esi, byte [esi + ebx + 1]
test esi, esi
je 0x403317
cmp esi, 0x3d
jne 0x4032d0
test dl, 1
mov ebx, dword [esp + 0x10]
je 0x4034dd
mov byte [0x4401ec], 1
mov eax, dword [ebx]
test eax, eax
je 0x403394
mov dl, 1
mov ecx, 1
mov esi, eax
nop word [eax + eax]
cmp byte [esi], 0x2d
jne 0x40336c
xor ebx, ebx
cmp byte [esi + 1], 0x2d
sete bl
cmp byte [esi + ebx + 1], 0x68
jne 0x40336c
inc ebx
movzx esi, byte [esi + ebx + 1]
test esi, esi
je 0x403573
cmp esi, 0x3d
je 0x403573
cmp edi, ecx
mov ebx, dword [esp + 0x10]
je 0x403580
setg dl
mov esi, dword [ebx + ecx*4]
inc ecx
test esi, esi
jne 0x403340
jmp 0x403580
mov dword [0x440164], edi
mov dword [0x440168], ebx
mov ecx, 0x43887a
call fcn.00411650
or edx, eax
je 0x4034a5
mov ecx, 0x43887a
call fcn.00411650
mov esi, eax
mov ecx, 0x43887c
call fcn.00411650
or edx, eax
je 0x4033cc
mov ecx, 0x43887c
call fcn.00411650
mov esi, eax
mov dword [esp + 0xc], esi
mov ecx, 0x438880
call fcn.00411550
test eax, eax
je 0x4034c1
mov ecx, 0x438880
call fcn.00411550
mov esi, eax
mov ecx, 0x438882
call fcn.00411550
test eax, eax
je 0x403408
mov ecx, 0x438882
call fcn.00411550
mov esi, eax
test edi, edi
jle 0x4038a6
mov edx, dword [ebx]
mov dword [esp + 0x18], str.rv64
test edx, edx
je 0x403497
mov cl, 1
mov eax, 1
nop word cs:[eax + eax]
nop
cmp byte [edx], 0x2d
jne 0x403480
xor ebx, ebx
cmp byte [edx + 1], 0x2d
sete bl
cmp byte [edx + ebx + 1], 0x72
jne 0x403480
inc ebx
cmp byte [edx + ebx + 1], 0x76
jne 0x403480
cmp byte [edx + ebx + 2], 0x33
jne 0x403480
cmp byte [edx + ebx + 3], 0x32
jne 0x403480
movzx edx, byte [edx + ebx + 4]
test edx, edx
je 0x4036a0
cmp edx, 0x3d
je 0x4036a0
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp edi, eax
je 0x4036b4
setg cl
mov ebx, dword [esp + 0x10]
mov edx, dword [ebx + eax*4]
inc eax
test edx, edx
jne 0x403430
cmp edi, 2
jge 0x4036c1
jmp 0x4038a6
mov esi, 0x10000000
mov ecx, 0x43887c
call fcn.00411650
or edx, eax
jne 0x4033c0
jmp 0x4033cc
mov esi, 1
mov ecx, 0x438882
call fcn.00411550
test eax, eax
jne 0x4033fc
jmp 0x403408
mov dl, 1
mov ecx, 1
jmp 0x403507
cmp ecx, edi
setl dl
lea esi, [eax + ecx + 1]
inc ecx
cmp esi, 1
mov ebx, dword [esp + 0x10]
je 0x40332b
mov esi, dword [ebx + ecx*4 - 4]
test esi, esi
je 0x40332b
cmp byte [esi], 0x2d
jne 0x4034f0
xor ebx, ebx
cmp byte [esi + 1], 0x2d
sete bl
cmp byte [esi + ebx + 1], 0x76
jne 0x4034f0
inc ebx
cmp byte [esi + ebx + 1], 0x65
jne 0x4034f0
cmp byte [esi + ebx + 2], 0x72
jne 0x4034f0
cmp byte [esi + ebx + 3], 0x62
jne 0x4034f0
cmp byte [esi + ebx + 4], 0x6f
jne 0x4034f0
cmp byte [esi + ebx + 5], 0x73
jne 0x4034f0
cmp byte [esi + ebx + 6], 0x65
jne 0x4034f0
movzx esi, byte [esi + ebx + 7]
test esi, esi
je 0x403561
cmp esi, 0x3d
jne 0x4034f0
test dl, 1
mov ebx, dword [esp + 0x10]
jne 0x403324
jmp 0x40332b
test dl, 1
mov ebx, dword [esp + 0x10]
jne 0x403672
test eax, eax
je 0x403394
mov dl, 1
mov ecx, 1
mov esi, eax
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp byte [esi], 0x2d
jne 0x4035f0
xor ebx, ebx
cmp byte [esi + 1], 0x2d
sete bl
cmp byte [esi + ebx + 1], 0x68
jne 0x4035f0
inc ebx
cmp byte [esi + ebx + 1], 0x65
jne 0x4035f0
cmp byte [esi + ebx + 2], 0x6c
jne 0x4035f0
cmp byte [esi + ebx + 3], 0x70
jne 0x4035f0
movzx esi, byte [esi + ebx + 4]
test esi, esi
je 0x403b20
cmp esi, 0x3d
je 0x403b20
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp edi, ecx
mov ebx, dword [esp + 0x10]
je 0x403603
setg dl
mov esi, dword [ebx + ecx*4]
inc ecx
test esi, esi
jne 0x4035a0
test eax, eax
je 0x403394
mov dl, 1
mov ecx, 1
nop word cs:[eax + eax]
nop dword [eax]
cmp byte [eax], 0x2d
jne 0x403644
xor ebx, ebx
cmp byte [eax + 1], 0x2d
sete bl
cmp byte [eax + ebx + 1], 0x48
jne 0x403644
inc ebx
movzx eax, byte [eax + ebx + 1]
test eax, eax
je 0x403665
cmp eax, 0x3d
je 0x403665
cmp edi, ecx
je 0x40365c
setg dl
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + ecx*4]
inc ecx
test eax, eax
jne 0x403620
jmp 0x403394
mov ebx, dword [esp + 0x10]
jmp 0x403394
test dl, 1
mov ebx, dword [esp + 0x10]
je 0x403394
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push 0
push 0
push 0x82c
push 0x4388ca
push eax
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
xor edi, edi
cmp dword [ebp + 8], 0
jg 0x4038bb
jmp 0x4038d8
mov eax, str.rv32
mov edx, str.rv64
test cl, 1
cmovne edx, eax
mov dword [esp + 0x18], edx
mov ebx, dword [esp + 0x10]
cmp edi, 2
jl 0x4038a6
mov dword [esp + 0x14], esi
mov dword [esp + 0x3c], 0
mov eax, 1
mov dword [esp + 0x44], edi
jmp 0x4036f7
mov ecx, dword [esp + 8]
mov dword [esp + 0x3c], ecx
add eax, dword [esp]
mov edi, dword [esp + 0x44]
cmp eax, edi
jge 0x403840
mov edx, dword [ebx + eax*4]
mov esi, str.bootrom
cmp byte [edx], 0x2d
jne 0x403760
xor ecx, ecx
cmp byte [edx + 1], 0x2d
sete cl
lea edi, [edx + ecx + 1]
xor ecx, ecx
movzx edx, byte [edi + ecx]
test edx, edx
je 0x40372e
nop dword [eax + eax]
cmp edx, 0x3d
je 0x403780
inc ecx
movzx edx, byte [edi + ecx]
test edx, edx
jne 0x403720
mov edx, dword [ebx + eax*4 + 4]
test edx, edx
je 0x403798
xor ebx, ebx
cmp byte [edx], 0x2d
mov ecx, 0x438879
cmove edx, ecx
mov dword [esp + 8], edx
setne bl
inc ebx
mov dword [esp], ebx
movzx ecx, byte [edi]
test cl, cl
jne 0x4037b0
jmp 0x4037cf
mov dword [esp + 8], edx
mov edi, str.bootrom
mov dword [esp], 1
movzx ecx, byte [edi]
test cl, cl
jne 0x4037b0
jmp 0x4037cf
lea ecx, [edi + ecx + 1]
mov dword [esp + 8], ecx
mov dword [esp], 1
movzx ecx, byte [edi]
test cl, cl
jne 0x4037b0
jmp 0x4037cf
mov dword [esp + 8], 0x438879
mov dword [esp], 1
movzx ecx, byte [edi]
test cl, cl
je 0x4037cf
nop
lea ebx, [edi + 1]
mov esi, str.bootrom
mov ch, cl
nop word [eax + eax]
movzx edx, byte [esi]
cmp ch, dl
jne 0x4037e0
inc esi
mov ch, byte [ebx]
inc ebx
test ch, ch
jne 0x4037c0
movzx edx, byte [esi]
mov ch, 1
test dl, dl
mov ebx, dword [esp + 0x10]
je 0x4037ee
jmp 0x4037f6
cmp ch, 0x3d
sete ch
test dl, dl
mov ebx, dword [esp + 0x10]
jne 0x4037f6
test ch, ch
jne 0x4036e0
test cl, cl
je 0x403812
inc edi
mov esi, str.bios
movzx edx, byte [esi]
cmp cl, dl
jne 0x403825
inc esi
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x403800
jmp 0x403817
mov esi, str.bios
movzx edx, byte [esi]
mov cl, 1
test dl, dl
je 0x403833
jmp 0x4036e8
cmp cl, 0x3d
sete cl
test dl, dl
jne 0x4036e8
test cl, cl
jne 0x4036e0
jmp 0x4036e8
cmp dword [esp + 0x3c], 0
mov esi, dword [esp + 0x14]
je 0x4038a6
mov eax, dword [0x45633c]
cmp eax, 2
mov edi, dword [esp + 0x18]
jne 0x403b4c
mov ecx, edi
jmp 0x40387d
mov dh, byte [ecx + str.rv64]
lea ecx, [eax + 1]
test dh, dh
je 0x4038ed
movzx edx, byte [ecx]
test dl, dl
je 0x4038eb
mov eax, ecx
xor ecx, ecx
nop dword [eax + eax]
mov dh, byte [ecx + str.rv64]
cmp dl, dh
jne 0x403876
movzx edx, byte [eax + ecx + 1]
inc ecx
test dl, dl
jne 0x403890
jmp 0x403870
push str.Usage:_rvvm__bootrom____mem_256M____k_kernel____help__...
call sub.MSVCR70.dll_puts
add esp, 4
xor edi, edi
cmp dword [ebp + 8], 0
jle 0x4038d8
xor esi, esi
nop dword [eax]
push dword [ebx + esi*4]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebx + esi*4], 0
inc esi
cmp esi, dword [ebp + 8]
jl 0x4038c0
push ebx
call sub.MSVCR70.dll_free
add esp, 4
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
cmp eax, edi
sete byte [esp]
mov edx, edi
jmp 0x40390e
movzx ebx, byte [edx + str.rv32]
lea edx, [ecx + 1]
test bl, bl
je 0x403937
mov bh, byte [edx]
test bh, bh
je 0x403935
mov ecx, edx
xor edx, edx
nop dword [eax + eax]
mov bl, byte [edx + str.rv32]
cmp bh, bl
jne 0x403907
mov bh, byte [ecx + edx + 1]
inc edx
test bh, bh
jne 0x403920
jmp 0x403900
xor ecx, ecx
cmp eax, edi
je 0x403956
cmp ecx, edi
je 0x403956
push edi
push str.Invalid_CPU_ISA_string:__s
call fcn.00410c50
add esp, 8
mov ebx, dword [esp + 0x10]
jmp 0x4039ec
lea eax, [esi - 0x401]
cmp eax, 0xfffffbff
mov ebx, dword [esp + 0x10]
ja 0x403973
push str.Invalid_machine_core_count
call fcn.00410c50
jmp 0x4039e9
mov esi, dword [esp + 0xc]
cmp esi, 0x40000001
jb 0x403995
cmp ecx, edi
jne 0x403995
push str.Creating_RV32_machine_with__1G_of_RAM_is_likely_to_break__fixing
call fcn.00410c10
add esp, 4
mov esi, 0x40000000
push 0xc0
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
movzx ecx, byte [esp]
mov byte [eax + 0x48], cl
test esi, 0xfff
mov dword [esp + 4], eax
je 0x403a0d
xor eax, eax
add esi, 0x80000000
setb al
push eax
push esi
push 0
push 0x80000000
push str.Memory_boundaries_misaligned:_0x_08I64x___0x_08I64x
call fcn.00410c50
add esp, 0x14
push dword [esp + 4]
call sub.MSVCR70.dll_free
add esp, 4
push str.Failed_to_create_VM
call fcn.00410c50
add esp, 4
mov edi, 0xffffffff
cmp dword [ebp + 8], 0
jg 0x4038bb
jmp 0x4038d8
mov dword [esp + 0xc], esi
mov eax, dword [0x440164]
mov esi, 0x46
mov dword [esp], eax
test eax, eax
jle 0x403b95
mov eax, dword [0x440168]
mov dword [esp + 8], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x403b95
mov bl, 1
mov edi, 1
mov edx, ecx
cmp byte [edx], 0x2d
jne 0x403a91
xor eax, eax
cmp byte [edx + 1], 0x2d
sete al
cmp byte [edx + eax + 1], 0x6e
jne 0x403a91
inc eax
cmp byte [edx + eax + 1], 0x6f
jne 0x403a91
cmp byte [edx + eax + 2], 0x5f
jne 0x403a91
cmp byte [edx + eax + 3], 0x6b
jne 0x403a91
cmp byte [edx + eax + 4], 0x73
jne 0x403a91
cmp byte [edx + eax + 5], 0x6d
jne 0x403a91
movzx eax, byte [edx + eax + 6]
test eax, eax
je 0x403b7b
cmp eax, 0x3d
je 0x403b7b
cmp dword [esp], edi
je 0x403aa5
setg bl
mov eax, dword [esp + 8]
mov edx, dword [eax + edi*4]
inc edi
test edx, edx
jne 0x403a42
test ecx, ecx
je 0x403b91
mov bl, 1
mov edi, 1
cmp byte [ecx], 0x2d
jne 0x403b03
xor eax, eax
cmp byte [ecx + 1], 0x2d
sete al
cmp byte [ecx + eax + 1], 0x6e
jne 0x403b03
inc eax
cmp byte [ecx + eax + 1], 0x6f
jne 0x403b03
cmp byte [ecx + eax + 2], 0x5f
jne 0x403b03
cmp byte [ecx + eax + 3], 0x74
jne 0x403b03
cmp byte [ecx + eax + 4], 0x68
jne 0x403b03
cmp byte [ecx + eax + 5], 0x70
jne 0x403b03
movzx eax, byte [ecx + eax + 6]
test eax, eax
je 0x408009
cmp eax, 0x3d
je 0x408009
cmp dword [esp], edi
je 0x403b17
setg bl
mov eax, dword [esp + 8]
mov ecx, dword [eax + edi*4]
inc edi
test ecx, ecx
jne 0x403ab4
or esi, 0x20
mov ebx, dword [esp + 0x10]
jmp 0x403b98
test dl, 1
mov ebx, dword [esp + 0x10]
je 0x403603
jmp 0x403672
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
test ebx, ebx
jne 0x4031c4
jmp 0x408293
mov ecx, 1
xor eax, eax
lock cmpxchg dword [0x45633c], ecx
jne 0x403b6c
call fcn.0040f890
mov dword [0x45633c], 2
mov ecx, 0x45633c
call fcn.00410d70
jmp 0x40385d
not bl
movzx esi, bl
and esi, 1
shl esi, 6
or esi, 6
test ecx, ecx
jne 0x403aad
mov ebx, dword [esp + 0x10]
or esi, 0x20
xor ecx, ecx
mov edi, dword [esp + 0xc]
mov edx, edi
push esi
call fcn.00411790
add esp, 4
mov ecx, dword [esp + 4]
mov dword [ecx + 0x10], eax
test eax, eax
je 0x403c6d
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], 0
movaps xmm0, xmmword [0x438060]
movlps qword [ecx + 0x90], xmm0
mov dword [ecx + 4], 0
mov dword [ecx], 0x80000000
movaps xmm0, xmmword [0x438070]
movlps qword [ecx + 0x70], xmm0
movaps xmm0, xmmword [0x438080]
movlps qword [ecx + 0x80], xmm0
mov eax, dword [0x440164]
test eax, eax
mov esi, edi
jle 0x403c7f
mov edx, dword [0x440168]
mov edi, dword [edx]
test edi, edi
je 0x403c96
mov cl, 1
mov esi, 1
cmp byte [edi], 0x2d
jne 0x403c5a
xor ebx, ebx
cmp byte [edi + 1], 0x2d
sete bl
cmp byte [edi + ebx + 1], 0x6e
jne 0x403c5a
inc ebx
cmp byte [edi + ebx + 1], 0x6f
jne 0x403c5a
cmp byte [edi + ebx + 2], 0x6a
jne 0x403c5a
cmp byte [edi + ebx + 3], 0x69
jne 0x403c5a
cmp byte [edi + ebx + 4], 0x74
jne 0x403c5a
movzx edi, byte [edi + ebx + 5]
test edi, edi
mov bl, 1
je 0x403ca8
cmp edi, 0x3d
je 0x403ca8
cmp esi, eax
setl cl
je 0x403ca8
mov edi, dword [edx + esi*4]
inc esi
test edi, edi
jne 0x403c18
xor ebx, ebx
jmp 0x403ca8
push str.Memory_allocation_failure
call fcn.00410c50
add esp, 4
jmp 0x4039e0
movdqa xmm0, xmmword [0x438090]
movq qword [ecx + 0x98], xmm0
mov edx, ecx
jmp 0x403d76
movdqa xmm0, xmmword [0x438090]
movq qword [ecx + 0x98], xmm0
jmp 0x403cce
and cl, bl
not cl
movzx ecx, cl
and ecx, 1
test eax, eax
movd xmm0, ecx
mov edx, dword [esp + 4]
movq qword [edx + 0x98], xmm0
mov esi, dword [esp + 0xc]
jle 0x403d76
mov edx, dword [0x440168]
mov edi, dword [edx]
test edi, edi
je 0x403d7a
mov cl, 1
mov esi, 1
cmp byte [edi], 0x2d
jne 0x403d5f
xor ebx, ebx
cmp byte [edi + 1], 0x2d
sete bl
cmp byte [edi + ebx + 1], 0x72
jne 0x403d5f
inc ebx
cmp byte [edi + ebx + 1], 0x76
jne 0x403d5f
cmp byte [edi + ebx + 2], 0x6a
jne 0x403d5f
cmp byte [edi + ebx + 3], 0x69
jne 0x403d5f
cmp byte [edi + ebx + 4], 0x74
jne 0x403d5f
cmp byte [edi + ebx + 5], 0x5f
jne 0x403d5f
cmp byte [edi + ebx + 6], 0x68
jne 0x403d5f
cmp byte [edi + ebx + 7], 0x61
jne 0x403d5f
cmp byte [edi + ebx + 8], 0x72
jne 0x403d5f
cmp byte [edi + ebx + 9], 0x76
jne 0x403d5f
cmp byte [edi + ebx + 0xa], 0x61
jne 0x403d5f
cmp byte [edi + ebx + 0xb], 0x72
jne 0x403d5f
cmp byte [edi + ebx + 0xc], 0x64
jne 0x403d5f
movzx edi, byte [edi + ebx + 0xd]
test edi, edi
mov bl, 1
je 0x403d82
cmp edi, 0x3d
je 0x403d82
cmp esi, eax
setl cl
je 0x403d82
mov edi, dword [edx + esi*4]
inc esi
test edi, edi
jne 0x403ce5
xor ebx, ebx
jmp 0x403d82
xor ecx, ecx
jmp 0x403d8c
xor ecx, ecx
mov edx, dword [esp + 4]
jmp 0x403d8c
and cl, bl
mov edx, dword [esp + 4]
mov esi, dword [esp + 0xc]
movzx eax, cl
and eax, 1
movd xmm0, eax
movq qword [edx + 0xa8], xmm0
mov ecx, str.jitcache
call fcn.00411650
or edx, eax
je 0x403db8
mov ecx, str.jitcache
call fcn.00411650
jmp 0x403ddc
xor ecx, ecx
cmp esi, 0x20000000
setae cl
shl ecx, 0x18
add ecx, 0x1000000
cmp esi, 0x40000000
mov eax, 0x4000000
cmovb eax, ecx
xor edx, edx
movd xmm0, eax
movd xmm1, edx
punpckldq xmm0, xmm1
mov ecx, dword [esp + 4]
movq qword [ecx + 0xa0], xmm0
mov eax, dword [ecx + 0x20]
lea esi, [ecx + 0x30]
jmp 0x403ee6
mov dword [ebx + 0x326c], 0xa
mov dword [ebx + 0x3268], 0
mov eax, 0x80000000
xor ecx, ecx
mov dword [ebx + 0x3260], ecx
mov dword [ebx + 0x3264], eax
mov dword [ebx + 0x35c0], esi
pcmpeqd xmm0, xmm0
movq qword [ebx + 0x35b8], xmm0
mov dword [ebx + 0x35d0], esi
movq qword [ebx + 0x35c8], xmm0
lea eax, [ebx + 0x210]
push 0x2000
push 0
push eax
call sub.MSVCR70.dll_memset
add esp, 0xc
mov eax, ebx
add eax, 0x2210
mov dword [ebx + 0x218], 0xffffffff
mov dword [ebx + 0x21c], 0xffffffff
mov dword [ebx + 0x220], 0xffffffff
mov dword [ebx + 0x224], 0xffffffff
mov dword [ebx + 0x228], 0xffffffff
mov dword [ebx + 0x22c], 0xffffffff
push 0x1000
push 0
push eax
call sub.MSVCR70.dll_memset
add esp, 0xc
mov dword [ebx + 0x221c], 0xffffffff
mov dword [ebx + 0x2218], 0xffffffff
mov dword [ebx], 0
mov ecx, dword [esp + 4]
mov edi, dword [ecx + 0x18]
mov edx, dword [ecx + 0x20]
lea eax, [edx + 1]
mov dword [ecx + 0x20], eax
mov dword [edi + edx*4], ebx
dec dword [esp + 0x14]
je 0x403fe7
mov ecx, dword [ecx + 0x1c]
cmp eax, ecx
jb 0x403f28
mov ebx, ecx
shr ebx, 1
add ebx, ecx
mov eax, 2
cmove ebx, eax
mov eax, dword [esp + 4]
mov dword [eax + 0x1c], ebx
shl ebx, 2
push ebx
push dword [eax + 0x18]
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x403fc9
test eax, eax
je 0x408293
mov ecx, dword [esp + 4]
mov dword [ecx + 0x18], eax
push 0x3628
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ebx, eax
call fcn.0040fcc0
mov dword [ebx + 0x35b0], eax
mov eax, dword [esp + 4]
mov dword [ebx + 0x3228], eax
movsd xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movsd qword [ebx + 0x3210], xmm0
movq qword [ebx + 0x3218], xmm1
movq xmm0, qword [eax + 0x10]
movq qword [ebx + 0x3220], xmm0
movzx ecx, byte [eax + 0x48]
mov byte [ebx + 0x323a], cl
mov byte [ebx + 0x3239], 3
xor eax, eax
mov edx, 0x80000000
add edx, 0x7fffffff
setb al
mov dword [ebx + 0x3298], edx
mov dword [ebx + 0x329c], eax
mov dword [ebx + 0x32b8], edx
mov dword [ebx + 0x32bc], eax
test cl, cl
jne 0x403dff
xor eax, eax
mov ecx, 0x40000000
jmp 0x403e1a
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x403f21
jmp 0x408293
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov dword [eax], 0
mov esi, dword [esp + 4]
mov dword [esi + 0xb0], eax
mov dword [esp + 0x1f0], 0x2000000
lea edi, [esp + 0x1f0]
mov ecx, eax
mov edx, str.address_cells
push 4
push edi
call fcn.00402500
add esp, 8
mov ecx, dword [esi + 0xb0]
mov dword [esp + 0x1f0], 0x2000000
mov edx, str.size_cells
push 4
push edi
call fcn.00402500
add esp, 8
mov ecx, dword [esi + 0xb0]
mov edx, str.model
push 0x18
push str.RVVM_v0.7_7403c70_dirty
call fcn.00402500
add esp, 8
mov ecx, dword [esi + 0xb0]
mov edx, str.compatible
push 0x19
push 0x439deb
call fcn.00402500
add esp, 8
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
push 7
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov dword [eax + 3], 0x6e6573
mov dword [eax], 0x736f6863
mov dword [edi], eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x220], xmm0
movdqa xmmword [esp + 0x210], xmm0
movdqa xmmword [esp + 0x200], xmm0
movdqa xmmword [esp + 0x1f0], xmm0
mov ecx, 0x3b9aca00
xor edx, edx
call fcn.0040d0a0
add eax, dword [0x456328]
adc edx, dword [0x45632c]
mov ecx, edx
shr ecx, 0x11
xor ecx, edx
shld edx, eax, 0xf
xor edx, eax
mov eax, ecx
shld eax, edx, 0x15
mov esi, edx
shl esi, 0x15
xor eax, ecx
xor esi, edx
mov ecx, eax
shld ecx, esi, 0x1c
shl edx, 0x1c
xor ecx, eax
xor edx, esi
mov eax, ecx
shr eax, 0x11
mov esi, eax
xor esi, edx
mov dword [esp + 0x1f4], ecx
mov dword [esp + 0x1f0], esi
shrd edx, ecx, 0x11
xor eax, ecx
xor edx, esi
mov ebx, eax
shld ebx, edx, 0x15
mov esi, edx
shl esi, 0x15
xor esi, edx
xor ebx, eax
mov ecx, ebx
shld ecx, esi, 0x1c
shl edx, 0x1c
xor ecx, ebx
xor edx, esi
mov eax, ecx
shr eax, 0x11
mov esi, eax
xor esi, edx
mov dword [esp + 0x1fc], ecx
mov dword [esp + 0x1f8], esi
shrd edx, ecx, 0x11
xor eax, ecx
xor edx, esi
mov esi, eax
shld esi, edx, 0x15
mov ecx, edx
shl ecx, 0x15
xor ecx, edx
xor esi, eax
mov eax, esi
shld eax, ecx, 0x1c
shl edx, 0x1c
xor eax, esi
xor edx, ecx
mov ebx, eax
shr ebx, 0x11
mov ecx, ebx
xor ecx, edx
shrd edx, eax, 0x11
xor ebx, eax
xor edx, ecx
mov esi, ebx
shld esi, edx, 0x15
mov dword [esp + 0x204], eax
mov eax, edx
shl eax, 0x15
xor eax, edx
xor esi, ebx
mov ebx, esi
shld ebx, eax, 0x1c
mov dword [esp + 0x200], ecx
shl edx, 0x1c
xor ebx, esi
xor edx, eax
mov eax, ebx
shr eax, 0x11
mov ecx, eax
xor ecx, edx
mov dword [esp + 0x20c], ebx
shrd edx, ebx, 0x11
xor eax, ebx
xor edx, ecx
mov esi, eax
shld esi, edx, 0x15
mov dword [esp + 0x208], ecx
mov ebx, edx
shl ebx, 0x15
xor ebx, edx
xor esi, eax
mov ecx, esi
shld ecx, ebx, 0x1c
shl edx, 0x1c
xor ecx, esi
xor edx, ebx
mov eax, ecx
shr eax, 0x11
mov esi, eax
xor esi, edx
mov dword [esp + 0x214], ecx
mov dword [esp + 0x210], esi
shrd edx, ecx, 0x11
xor eax, ecx
xor edx, esi
mov ebx, eax
shld ebx, edx, 0x15
mov esi, edx
shl esi, 0x15
xor esi, edx
xor ebx, eax
mov ecx, ebx
shld ecx, esi, 0x1c
shl edx, 0x1c
xor ecx, ebx
xor edx, esi
mov eax, ecx
shr eax, 0x11
mov esi, eax
xor esi, edx
mov dword [esp + 0x21c], ecx
mov dword [esp + 0x218], esi
shrd edx, ecx, 0x11
xor eax, ecx
xor edx, esi
mov esi, eax
shld esi, edx, 0x15
mov ecx, edx
shl ecx, 0x15
xor ecx, edx
xor esi, eax
mov eax, esi
shld eax, ecx, 0x1c
shl edx, 0x1c
xor eax, esi
xor edx, ecx
mov ebx, eax
shr ebx, 0x11
mov ecx, ebx
xor ecx, edx
shrd edx, eax, 0x11
xor ebx, eax
xor edx, ecx
mov esi, ebx
shld esi, edx, 0x15
mov dword [esp + 0x224], eax
mov eax, edx
shl eax, 0x15
xor eax, edx
xor esi, ebx
mov ebx, esi
shld ebx, eax, 0x1c
mov dword [esp + 0x220], ecx
shl edx, 0x1c
xor ebx, esi
xor edx, eax
mov eax, ebx
shr eax, 0x11
mov esi, eax
xor esi, edx
mov dword [esp + 0x22c], ebx
shrd edx, ebx, 0x11
xor eax, ebx
xor edx, esi
mov ecx, eax
shld ecx, edx, 0x15
mov dword [esp + 0x228], esi
mov esi, edx
shl esi, 0x15
xor esi, edx
xor ecx, eax
mov eax, ecx
shld eax, esi, 0x1c
shl edx, 0x1c
xor eax, ecx
xor edx, esi
mov dword [0x45632c], eax
shr eax, 0x11
xor eax, edx
mov dword [0x456328], eax
mov ecx, edi
mov edx, str.rng_seed
push 0x40
lea eax, [esp + 0x1f4]
push eax
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb0]
test esi, esi
je 0x404383
mov dword [edi + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x404376
mov ecx, edx
shr ecx, 1
add ecx, edx
mov ebx, 2
cmovne ebx, ecx
mov dword [esi + 0x1c], ebx
shl ebx, 2
push ebx
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x408101
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], edi
mov eax, dword [esp + 4]
mov edx, dword [eax]
mov edi, eax
mov ecx, str.memory
push dword [eax + 4]
call fcn.00402070
add esp, 4
mov dword [esp], eax
mov ecx, eax
mov edx, str.device_type
push 7
push str.memory
call fcn.00402500
add esp, 8
mov esi, dword [edi]
mov edx, dword [edi + 4]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
bswap esi
mov dword [esp + 0x74], esi
mov byte [esp + 0x73], dl
mov byte [esp + 0x72], dh
mov ebx, edx
shr ebx, 0x10
mov byte [esp + 0x71], bl
mov ebx, dword [esp]
shr edx, 0x18
mov byte [esp + 0x70], dl
mov byte [esp + 0x7f], cl
mov byte [esp + 0x7e], ch
mov edx, ecx
shr edx, 0x10
mov byte [esp + 0x7d], dl
mov edx, eax
shr ecx, 0x18
mov byte [esp + 0x7c], cl
mov byte [esp + 0x7b], al
mov byte [esp + 0x7a], ah
shr eax, 0x10
shr edx, 0x18
mov byte [esp + 0x79], al
mov byte [esp + 0x78], dl
lea eax, [esp + 0x70]
mov ecx, ebx
mov edx, 0x43ac95
push 0x10
push eax
call fcn.00402500
add esp, 8
mov esi, dword [edi + 0xb0]
test esi, esi
je 0x40447d
mov dword [ebx + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x404474
mov edi, ebx
mov ecx, edx
shr ecx, 1
add ecx, edx
mov ebx, 2
cmovne ebx, ecx
mov dword [esi + 0x1c], ebx
shl ebx, 2
push ebx
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x40811f
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
mov ebx, edi
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], ebx
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
push 5
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov byte [eax + 4], 0
mov dword [eax], 0x73757063
mov dword [edi], eax
mov dword [esp + 0x70], 0x1000000
mov ecx, edi
mov edx, str.address_cells
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0
mov ecx, edi
mov edx, str.size_cells
push 4
push esi
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
movq xmm0, qword [eax + 0x80]
movd eax, xmm0
bswap eax
mov dword [esp + 0x70], eax
mov ecx, edi
mov edx, str.timebase_frequency
push 4
push esi
call fcn.00402500
add esp, 8
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov esi, eax
push 8
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov dword [eax + 4], 0x70616d
mov dword [eax], 0x2d757063
mov dword [esi], eax
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ebx, eax
mov dword [esp + 0x1c], esi
push 9
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov byte [eax + 8], 0
mov dword [eax + 4], 0x30726574
mov dword [eax], 0x73756c63
mov dword [ebx], eax
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb0]
test esi, esi
mov dword [esp + 0x14], edi
je 0x4045ee
mov dword [edi + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x4045e1
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x40813d
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
mov edi, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], edi
mov eax, dword [esp + 4]
mov dword [esp + 0x18], ebx
cmp dword [eax + 0x20], 0
je 0x404cc3
xor ebx, ebx
jmp 0x40461b
lea edx, [ecx + 1]
mov dword [ebx + 0x20], edx
mov dword [eax + ecx*4], esi
mov ebx, dword [esp + 8]
inc ebx
mov eax, dword [esp + 4]
cmp ebx, dword [eax + 0x20]
jae 0x404cc3
mov ecx, 0x43ab73
mov edx, ebx
push 0
call fcn.00402070
add esp, 4
mov esi, eax
mov ecx, eax
mov edx, str.device_type
push 4
push 0x43ab73
call fcn.00402500
add esp, 8
mov eax, ebx
bswap eax
mov dword [esp + 0x70], eax
mov ecx, esi
mov edx, 0x43ac95
push 4
lea edi, [esp + 0x74]
push edi
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.compatible
push 0x12
push str.lekkit_rvvm
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x5ed0b2
mov ecx, esi
mov edx, str.clock_frequency
push 4
push edi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x40000000
mov ecx, esi
mov edx, str.riscv_cboz_block_size
push 4
push edi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x40000000
mov dword [esp], esi
mov ecx, esi
mov edx, str.riscv_cbom_block_size
push 4
push edi
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], ebx
mov eax, dword [eax + ebx*4]
movzx ecx, byte [eax + 0x323a]
test cl, cl
mov eax, str.rv64imafdcb_zicsr_zifencei_zkr_zicboz_zicbom_svadu_sstc
mov edx, str.rv32imafdcb_zicsr_zifencei_zkr_zicboz_zicbom_svadu_sstc
cmove eax, edx
xor edi, edi
nop
cmp byte [eax + edi], 0
lea edi, [edi + 1]
jne 0x4046f0
test cl, cl
mov esi, str.riscv_sv39
mov ecx, str.riscv_sv32
cmove esi, ecx
mov ecx, dword [esp]
mov edx, str.riscv_isa
push edi
push eax
call fcn.00402500
add esp, 8
xor eax, eax
nop dword [eax]
cmp byte [esi + eax], 0
lea eax, [eax + 1]
jne 0x404720
mov ecx, dword [esp]
mov edx, str.mmu_type
push eax
push esi
mov esi, ecx
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.status
push 5
push str.okay
call fcn.00402500
add esp, 8
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
push 0x15
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov byte [eax + 0x14], 0
mov dword [eax + 0x10], 0x72656c6c
mov dword [eax + 0xc], 0x6f72746e
mov dword [eax + 8], 0x6f632d74
mov dword [eax + 4], 0x70757272
mov dword [eax], 0x65746e69
mov dword [edi], eax
mov dword [esp + 0x70], 0x1000000
mov ecx, edi
mov edx, str.interrupt_cells
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.interrupt_controller
push 0
push 0
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.compatible
push 0xf
push str.riscv_cpu_intc
call fcn.00402500
add esp, 8
mov dword [edi + 4], esi
mov eax, dword [esi + 0x20]
mov ebx, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jb 0x404835
mov edx, esi
mov esi, ecx
shr esi, 1
add esi, ecx
mov eax, 2
cmove esi, eax
mov dword [edx + 0x1c], esi
shl esi, 2
push esi
push ebx
call sub.MSVCR70.dll_realloc
add esp, 8
mov ebx, eax
test esi, esi
je 0x404c6d
test ebx, ebx
je 0x408293
mov esi, dword [esp]
mov dword [esi + 0x18], ebx
mov eax, dword [esi + 0x20]
lea ecx, [eax + 1]
mov dword [esi + 0x20], ecx
mov dword [ebx + eax*4], edi
mov edi, dword [esp + 0x14]
mov dword [esi + 4], edi
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
cmp ecx, edx
jae 0x404858
mov ebx, dword [esp + 8]
jmp 0x404893
mov esi, edx
shr esi, 1
add esi, edx
mov ecx, 2
cmove esi, ecx
mov dword [edi + 0x1c], esi
shl esi, 2
push esi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test esi, esi
mov ebx, dword [esp + 8]
je 0x404c87
test eax, eax
je 0x408293
mov dword [edi + 0x18], eax
mov ecx, dword [edi + 0x20]
mov esi, dword [esp]
lea edx, [ecx + 1]
mov dword [edi + 0x20], edx
mov dword [eax + ecx*4], esi
mov ecx, ebx
shr ecx, 1
mov eax, ecx
mov edx, 0x66666667
mul edx
shr edx, 1
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0x65726f63
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
sub ecx, edx
mov eax, ecx
mov ecx, 0xcccccccd
mul ecx
mov edi, eax
mov dword [esp + 0x8c], 0
imul eax, eax, 0xf6
add eax, ebx
or al, 0x30
mov byte [esp + 0x74], al
mov edx, 1
cmp ebx, 0xa
jb 0x4049a1
push 0
push 0x64
push 0
push ebx
call fcn.00436db0
add esp, 0x10
mov esi, ebx
mov ebx, eax
imul eax, eax, 0xf6
add eax, edi
or al, 0x30
mov byte [esp + 0x75], al
mov edx, 2
cmp esi, 0x64
jb 0x404981
push 0
push 0x3e8
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov edi, eax
imul eax, eax, 0xf6
add eax, ebx
or al, 0x30
mov byte [esp + 0x76], al
mov edx, 3
cmp esi, 0x3e8
jae 0x404add
lea eax, [esp + 0x74]
add eax, edx
xor esi, esi
test dl, 2
je 0x4049a1
movzx ebx, byte [esp + esi + 0x74]
mov ecx, esi
not ecx
mov bh, byte [eax + ecx]
mov byte [esp + esi + 0x74], bh
mov byte [eax + ecx], bl
mov byte [esp + edx + 0x74], 0
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov dword [esp + 0xc], eax
xor edi, edi
cmp byte [esp + edi + 0x70], 0
lea edi, [edi + 1]
jne 0x4049c0
xor ebx, ebx
test edi, edi
mov esi, 0
je 0x4049f7
push edi
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov esi, eax
push edi
lea eax, [esp + 0x74]
push eax
push esi
call sub.MSVCR70.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0xc]
mov dword [eax], esi
mov esi, eax
mov edx, dword [esp]
mov eax, dword [edx]
test eax, eax
mov edi, dword [esp + 0x14]
je 0x404a6c
mov ebx, dword [edx + 8]
lea ecx, [ebx + 1]
cmp ecx, 1
ja 0x404a6c
mov ecx, edx
nop dword [eax]
mov esi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x404a20
cmp dword [esi], 0
je 0x404a3c
push eax
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov esi, dword [esp]
mov dword [esi + 8], eax
bswap eax
mov dword [esp + 0x48], eax
mov ecx, esi
mov edx, str.phandle
push 4
lea eax, [esp + 0x4c]
push eax
call fcn.00402500
add esp, 8
mov ebx, dword [esi + 8]
mov esi, dword [esp + 0xc]
bswap ebx
mov dword [esp + 0x48], ebx
mov ecx, esi
mov edx, 0x43ab73
push 4
lea eax, [esp + 0x4c]
push eax
call fcn.00402500
add esp, 8
mov ebx, dword [esp + 0x18]
mov dword [esi + 4], ebx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
mov edx, dword [ebx + 0x1c]
cmp ecx, edx
jb 0x404600
mov esi, edx
shr esi, 1
add esi, edx
mov ecx, 2
cmove esi, ecx
mov dword [ebx + 0x1c], esi
shl esi, 2
push esi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test esi, esi
je 0x404ca5
test eax, eax
je 0x408293
mov dword [ebx + 0x18], eax
mov ecx, dword [ebx + 0x20]
mov esi, dword [esp + 0xc]
jmp 0x404600
push 0
push 0x2710
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov ebx, eax
imul eax, eax, 0xf6
add eax, edi
or al, 0x30
mov byte [esp + 0x77], al
mov edx, 4
cmp esi, 0x2710
jb 0x404c0d
push 0
push 0x186a0
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov edi, eax
imul eax, eax, 0xf6
add eax, ebx
or al, 0x30
mov byte [esp + 0x78], al
mov edx, 5
cmp esi, 0x186a0
jb 0x404c0d
push 0
push 0xf4240
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov ebx, eax
imul eax, eax, 0xf6
add eax, edi
or al, 0x30
mov byte [esp + 0x79], al
mov edx, 6
cmp esi, 0xf4240
jb 0x404c0d
push 0
push 0x989680
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov edi, eax
imul eax, eax, 0xf6
add eax, ebx
or al, 0x30
mov byte [esp + 0x7a], al
mov edx, 7
cmp esi, 0x989680
jb 0x404c0d
push 0
push 0x5f5e100
push 0
push esi
call fcn.00436db0
add esp, 0x10
mov ebx, eax
imul eax, eax, 0xf6
add eax, edi
or al, 0x30
mov byte [esp + 0x7b], al
mov edx, 8
cmp esi, 0x5f5e100
jb 0x404c0d
push 0
push 0x3b9aca00
push 0
push esi
call fcn.00436db0
add esp, 0x10
imul ecx, eax, 0xf6
add ecx, ebx
or cl, 0x30
mov byte [esp + 0x7c], cl
mov edx, 9
cmp esi, 0x3b9aca00
jb 0x404c0d
or al, 0x30
mov byte [esp + 0x7d], al
mov edx, 0xa
mov ecx, edx
shr ecx, 1
lea eax, [esp + 0x74]
add eax, edx
and ecx, 0xfffffffe
mov esi, edx
lea edx, [esp + 0x73]
mov dword [esp + 0xc], esi
lea edi, [edx + esi]
xor esi, esi
nop dword [eax]
movzx ebx, byte [esp + esi + 0x74]
mov bh, byte [edi]
mov byte [esp + esi + 0x74], bh
mov byte [edi], bl
movzx ebx, byte [esp + esi + 0x75]
mov edx, esi
xor edx, 0xfffffffe
mov bh, byte [eax + edx]
mov byte [esp + esi + 0x75], bh
mov byte [eax + edx], bl
add esi, 2
add edi, 0xfffffffe
cmp ecx, esi
jne 0x404c30
mov edx, dword [esp + 0xc]
test dl, 2
jne 0x40498e
jmp 0x4049a1
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
test ebx, ebx
jne 0x40482c
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov esi, eax
call fcn.00410c10
mov eax, esi
add esp, 4
test eax, eax
jne 0x40488a
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov esi, eax
call fcn.00410c10
mov eax, esi
add esp, 4
test eax, eax
jne 0x404ace
jmp 0x408293
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov dword [ebx + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x404d15
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edx, esi
mov esi, 2
cmovne esi, ecx
mov dword [edx + 0x1c], esi
shl esi, 2
push esi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test esi, esi
je 0x4080c5
test eax, eax
je 0x408293
mov esi, dword [esp + 0x1c]
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], ebx
mov dword [esi + 4], edi
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
cmp ecx, edx
jb 0x404d66
mov ecx, edx
shr ecx, 1
add ecx, edx
mov esi, 2
cmovne esi, ecx
mov dword [edi + 0x1c], esi
shl esi, 2
push esi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test esi, esi
je 0x4080e3
test eax, eax
je 0x408293
mov dword [edi + 0x18], eax
mov ecx, dword [edi + 0x20]
mov esi, dword [esp + 0x1c]
lea edx, [ecx + 1]
mov dword [edi + 0x20], edx
mov dword [eax + ecx*4], esi
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
push 4
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov dword [eax], 0x636f73
mov dword [edi], eax
mov dword [esp + 0x70], 0x2000000
mov ecx, edi
mov edx, str.address_cells
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x2000000
mov ecx, edi
mov edx, str.size_cells
push 4
push esi
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.compatible
push 0xb
push str.simple_bus
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.ranges
push 0
push 0
call fcn.00402500
add esp, 8
mov ecx, dword [esp + 4]
mov esi, dword [ecx + 0xb0]
test esi, esi
je 0x404e5f
mov dword [edi + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x404e52
mov ecx, edx
shr ecx, 1
add ecx, edx
mov ebx, 2
cmovne ebx, ecx
mov dword [esi + 0x1c], ebx
shl ebx, 2
push ebx
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x40815b
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], edi
mov ecx, dword [esp + 4]
mov dword [ecx + 0xb4], edi
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov eax, edx
add eax, edi
mov eax, esi
adc eax, 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], edx
add edi, edx
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x38], esi
adc eax, esi
mov dword [esp + 0x34], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x2c], eax
and edi, 0xfffff000
mov dword [esp + 0x28], edi
mov dword [esp], 0x2000000
xor ecx, ecx
jmp 0x404ecf
mov dword [esp + 8], 0
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
test byte [esp + 8], 1
mov dword [esp], ebx
mov ecx, esi
jne 0x404fad
mov eax, dword [esp]
add eax, 0x10000
mov esi, ecx
adc ecx, 0
cmp dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
sbb eax, ecx
jae 0x404ef7
mov eax, dword [esp]
cmp eax, dword [esp + 0x34]
mov eax, esi
sbb eax, dword [esp + 0x30]
jb 0x404eaf
mov eax, dword [esp + 4]
mov edx, dword [eax + 0x2c]
test edx, edx
je 0x404faa
mov edi, dword [eax + 0x24]
mov al, 1
mov dword [esp + 8], eax
mov ecx, esi
nop word cs:[eax + eax]
nop dword [eax + eax]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], edi
mov ebx, dword [edi]
mov eax, dword [ebx]
mov dword [esp + 0x1c], eax
mov edx, dword [ebx + 4]
mov ebx, dword [ebx + 8]
add ebx, eax
mov esi, edx
adc esi, 0
mov edi, dword [esp]
cmp edi, ebx
mov eax, ecx
sbb ecx, esi
setb byte [esp + 0x18]
mov ecx, edi
add ecx, 0x10000
mov edi, eax
adc edi, 0
cmp dword [esp + 0x1c], ecx
sbb edx, edi
mov edx, 0
setb cl
add ebx, 0xfff
adc esi, 0
and ebx, 0xfffff000
test byte [esp + 0x18], cl
mov ecx, dword [esp + 8]
movzx ecx, cl
cmovne ecx, edx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0xc]
cmove esi, eax
cmove ebx, dword [esp]
mov edi, dword [esp + 0x14]
add edi, 4
dec edx
mov dword [esp], ebx
mov ecx, esi
jne 0x404f20
jmp 0x404ebf
mov ebx, dword [esp]
mov dword [esp + 0x1f0], ebx
mov dword [esp + 0x1f4], esi
mov dword [esp + 0x1f8], 0x4000
mov dword [esp + 0x1fc], 0
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
mov dword [esp + 0x208], 0x440030
mov dword [esp + 0x20c], 0x413a30
mov dword [esp + 0x210], 0x413a80
mov word [esp + 0x214], 0x404
mov eax, ebx
add eax, 0x4000
mov edi, esi
mov ecx, esi
adc ecx, 0
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x78], 0x8000
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0x440040
mov dword [esp + 0x8c], 0x413b30
mov dword [esp + 0x90], 0x413bf0
mov word [esp + 0x94], 0x808
lea edx, [esp + 0x1f0]
mov esi, dword [esp + 4]
mov ecx, esi
call fcn.0040ee00
lea edx, [esp + 0x70]
mov ecx, esi
call fcn.0040ee00
mov ecx, str.clint
mov edx, ebx
mov dword [esp], edi
push edi
call fcn.00402070
add esp, 4
mov dword [esp + 0x14], eax
mov esi, dword [esi + 0xb0]
test esi, esi
je 0x4050f4
mov ecx, dword [esi + 0x20]
jmp 0x4050c6
xor eax, eax
cmp al, byte [edx + str.cpus]
je 0x4050fc
sub ecx, 1
jb 0x4050f4
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov dword [esp + 8], eax
mov edi, dword [eax]
movzx eax, byte [edi]
xor edx, edx
test al, al
je 0x4050bc
cmp al, byte [edx + str.cpus]
jne 0x4050be
movzx eax, byte [edi + edx + 1]
inc edx
test al, al
jne 0x4050e0
jmp 0x4050bc
mov dword [esp + 8], 0
mov eax, dword [esp + 4]
mov edi, dword [eax + 0x20]
shl edi, 2
push 4
push edi
call sub.MSVCR70.dll_calloc
add esp, 8
test edi, edi
je 0x408041
mov dword [esp + 0xc], eax
test eax, eax
mov esi, dword [esp + 0x14]
mov ecx, dword [esp]
je 0x408293
mov dword [esp + 0x18], edi
bswap ebx
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x4b], cl
mov byte [esp + 0x4a], ch
mov eax, ecx
shr eax, 0x10
mov byte [esp + 0x49], al
shr ecx, 0x18
mov byte [esp + 0x48], cl
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0x100
lea eax, [esp + 0x48]
mov ecx, esi
mov edx, 0x43ac95
push 0x10
push eax
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.compatible
push 0x1b
push str.sifive_clint0
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
cmp dword [eax + 0x20], 0
je 0x4052a6
xor esi, esi
jmp 0x4051ba
push str.Missing_nodes_in_FDT_
call fcn.00410c10
add esp, 4
mov esi, dword [esp]
inc esi
mov eax, dword [esp + 4]
cmp esi, dword [eax + 0x20]
jae 0x4052a6
mov ecx, dword [esp + 8]
mov edx, 0x43ab73
push 0
mov dword [esp + 4], esi
push esi
call fcn.004022c0
add esp, 8
test eax, eax
je 0x40519c
mov edx, dword [eax + 0x20]
jmp 0x4051ea
xor ebx, ebx
cmp bl, byte [edi + str.interrupt_controller]
je 0x405214
sub edx, 1
jb 0x40519c
mov ecx, dword [eax + 0x18]
mov esi, dword [ecx + edx*4]
mov ecx, dword [esi]
movzx ebx, byte [ecx]
xor edi, edi
test bl, bl
je 0x4051e0
cmp bl, byte [edi + str.interrupt_controller]
jne 0x4051e2
movzx ebx, byte [ecx + edi + 1]
inc edi
test bl, bl
jne 0x405200
jmp 0x4051e0
mov eax, dword [esi + 8]
lea edx, [eax + 1]
cmp edx, 1
ja 0x405275
mov eax, esi
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x405230
cmp dword [edi], 0
je 0x40524c
push ecx
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [edi + 8]
inc eax
mov dword [edi + 8], eax
mov dword [esi + 8], eax
bswap eax
mov dword [esp + 0x48], eax
mov ecx, esi
mov edx, str.phandle
push 4
lea eax, [esp + 0x4c]
push eax
call fcn.00402500
add esp, 8
mov eax, dword [esi + 8]
mov esi, dword [esp]
mov ecx, esi
shl ecx, 4
mov edx, dword [esp + 0xc]
mov dword [edx + ecx + 8], eax
mov dword [edx + ecx], eax
mov dword [edx + ecx + 4], 3
mov dword [edx + ecx + 0xc], 7
inc esi
mov eax, dword [esp + 4]
cmp esi, dword [eax + 0x20]
jb 0x4051ba
mov edi, dword [esp + 0x14]
mov ecx, edi
mov edx, str.interrupts_extended
push dword [esp + 0x18]
push dword [esp + 0x10]
call fcn.004026d0
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x405320
mov dword [edi + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x405313
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x408179
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov edx, dword [esp + 0x14]
mov dword [eax + ecx*4], edx
push dword [esp + 0xc]
call sub.MSVCR70.dll_free
add esp, 4
mov ecx, dword [esp + 4]
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov eax, edx
add eax, edi
mov eax, esi
adc eax, 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], edx
add edi, edx
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x34], esi
adc eax, esi
mov dword [esp + 0x30], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x28], eax
and edi, 0xfffff000
mov dword [esp + 0x24], edi
mov ebx, 0xc000000
mov dword [esp], 0
jmp 0x40539d
mov dword [esp + 8], 0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
test byte [esp + 8], 1
mov ebx, ecx
mov dword [esp], edx
jne 0x405474
mov eax, ebx
add eax, 0x4000000
mov ecx, dword [esp]
adc ecx, 0
cmp dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
sbb eax, ecx
jae 0x4053c3
cmp ebx, dword [esp + 0x30]
mov eax, dword [esp]
sbb eax, dword [esp + 0x2c]
jb 0x40537d
mov eax, dword [esp + 4]
mov edi, dword [eax + 0x2c]
test edi, edi
je 0x40546f
mov esi, dword [eax + 0x24]
mov al, 1
mov dword [esp + 8], eax
nop dword [eax + eax]
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], edi
mov eax, dword [esp]
mov dword [esp + 0x14], esi
mov edi, dword [esi]
mov edx, dword [edi]
mov dword [esp + 0x20], edx
mov esi, dword [edi + 4]
mov ecx, dword [edi + 8]
add ecx, edx
mov edx, esi
adc edx, 0
cmp ebx, ecx
mov edi, eax
sbb edi, edx
setb byte [esp + 0x1c]
mov edi, ebx
add edi, 0x4000000
mov ebx, eax
adc ebx, 0
cmp dword [esp + 0x20], edi
mov edi, dword [esp + 0xc]
sbb esi, ebx
mov esi, 0
setb bl
add ecx, 0xfff
adc edx, 0
and ecx, 0xfffff000
test byte [esp + 0x1c], bl
mov ebx, dword [esp + 8]
movzx ebx, bl
cmovne ebx, esi
mov dword [esp + 8], ebx
cmove edx, eax
cmove ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
add esi, 4
dec edi
mov ebx, ecx
mov dword [esp], edx
jne 0x4053e0
jmp 0x40538d
mov ecx, ebx
mov edx, dword [esp]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
push 0x124
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ecx, dword [esp + 4]
mov dword [esp + 0x18], eax
mov dword [eax], ecx
mov edi, dword [ecx + 0x20]
add edi, edi
push 4
push edi
call sub.MSVCR70.dll_calloc
add esp, 8
mov esi, eax
test edi, edi
je 0x408057
test esi, esi
je 0x408293
mov edi, dword [esp + 0x18]
mov dword [edi + 0x11c], esi
mov eax, dword [esp + 4]
mov ebx, dword [eax + 0x20]
test ebx, 0x7fffffff
je 0x405516
add ebx, ebx
cmp ebx, 1
mov dword [esp], ebx
adc ebx, 0
push 4
push 2
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov dword [esi], eax
add esi, 4
dec ebx
jne 0x4054e3
push 4
mov ebx, dword [esp + 4]
push ebx
call sub.MSVCR70.dll_calloc
add esp, 8
mov esi, eax
test ebx, ebx
jne 0x405531
jmp 0x405524
push 4
push 0
call sub.MSVCR70.dll_calloc
add esp, 8
mov esi, eax
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
test esi, esi
je 0x408293
mov dword [edi + 0x120], esi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1f0], eax
mov dword [esp + 0x1f8], 0x4000000
mov dword [esp + 0x1fc], edi
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
mov dword [esp + 0x208], 0x440090
mov dword [esp + 0x20c], 0x419160
mov dword [esp + 0x210], 0x419250
mov word [esp + 0x214], 0x404
lea edx, [esp + 0x1f0]
mov esi, dword [esp + 4]
mov ecx, esi
call fcn.0040ee00
test eax, eax
je 0x405941
mov dword [esi + 0x58], edi
mov eax, dword [esi + 0xb0]
test eax, eax
je 0x405614
mov ecx, dword [eax + 0x20]
jmp 0x4055de
xor ebx, ebx
cmp bl, byte [edx + str.cpus]
je 0x405626
sub ecx, 1
jb 0x405614
mov edx, dword [eax + 0x18]
mov edi, dword [edx + ecx*4]
mov esi, dword [edi]
movzx ebx, byte [esi]
xor edx, edx
test bl, bl
je 0x4055d4
nop word cs:[eax + eax]
nop
cmp bl, byte [edx + str.cpus]
jne 0x4055d6
movzx ebx, byte [esi + edx + 1]
inc edx
test bl, bl
jne 0x405600
jmp 0x4055d4
push str.Missing__cpus_node_in_FDT_
call fcn.00410c10
add esp, 4
jmp 0x40593d
mov dword [esp + 0x14], edi
mov eax, dword [esp + 4]
mov esi, dword [eax + 0x20]
shl esi, 2
push 4
push esi
call sub.MSVCR70.dll_calloc
add esp, 8
mov dword [esp + 0xc], eax
test esi, esi
je 0x408245
cmp dword [esp + 0xc], 0
je 0x408293
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x20]
mov dword [esp + 8], eax
test eax, eax
je 0x405774
xor esi, esi
jmp 0x40569a
xor eax, eax
mov ecx, esi
shl ecx, 4
mov edx, dword [esp + 0xc]
mov dword [edx + ecx + 8], eax
mov dword [edx + ecx], eax
mov dword [edx + ecx + 4], 0xb
mov dword [edx + ecx + 0xc], 9
inc esi
cmp esi, dword [esp + 8]
jae 0x405774
mov ecx, dword [esp + 0x14]
mov edx, 0x43ab73
push 0
push esi
call fcn.004022c0
add esp, 8
test eax, eax
je 0x40566d
mov dword [esp], esi
mov esi, dword [eax + 0x20]
jmp 0x4056ca
xor edx, edx
cmp dl, byte [ebx + str.interrupt_controller]
je 0x405708
sub esi, 1
jb 0x405704
mov ecx, dword [eax + 0x18]
mov ecx, dword [ecx + esi*4]
mov edi, ecx
mov ecx, dword [ecx]
movzx edx, byte [ecx]
xor ebx, ebx
test dl, dl
je 0x4056c0
nop word cs:[eax + eax]
nop dword [eax]
cmp dl, byte [ebx + str.interrupt_controller]
jne 0x4056c2
movzx edx, byte [ecx + ebx + 1]
inc ebx
test dl, dl
jne 0x4056f0
jmp 0x4056c0
xor eax, eax
jmp 0x40576c
mov eax, dword [edi + 8]
lea edx, [eax + 1]
cmp edx, 1
mov esi, dword [esp]
ja 0x40566f
mov eax, edi
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40571c
cmp dword [esi], 0
je 0x405738
push ecx
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov dword [edi + 8], eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, edi
mov edx, str.phandle
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov eax, dword [edi + 8]
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 0x20]
mov dword [esp + 8], ecx
mov esi, dword [esp]
jmp 0x40566f
mov ecx, str.plic
mov esi, dword [esp + 0x20]
mov edx, esi
mov ebx, dword [esp + 0x1c]
push ebx
call fcn.00402070
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0
mov ecx, eax
mov edx, str.address_cells
push 4
lea edi, [esp + 0x74]
push edi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x1000000
mov edi, dword [esp]
mov ecx, edi
mov edx, str.interrupt_cells
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
bswap esi
mov dword [esp + 0x74], esi
mov esi, edi
mov byte [esp + 0x73], bl
mov byte [esp + 0x72], bh
mov eax, ebx
shr eax, 0x10
mov byte [esp + 0x71], al
shr ebx, 0x18
mov byte [esp + 0x70], bl
mov dword [esp + 0x7c], 4
mov dword [esp + 0x78], 0
mov ecx, edi
mov edx, 0x43ac95
push 0x10
lea edi, [esp + 0x74]
push edi
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.compatible
push 0x12
push str.sifive_plic_1.0.0
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x3f000000
mov ecx, esi
mov edx, str.riscv_ndev
push 4
push edi
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.interrupt_controller
push 0
push 0
call fcn.00402500
add esp, 8
mov edi, dword [esp + 4]
mov eax, dword [edi + 0x20]
shl eax, 2
mov ecx, esi
mov edx, str.interrupts_extended
push eax
mov ebx, dword [esp + 0x10]
push ebx
call fcn.004026d0
add esp, 8
push ebx
call sub.MSVCR70.dll_free
add esp, 4
mov edi, dword [edi + 0xb4]
test edi, edi
je 0x4058d6
mov dword [esi + 4], edi
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
cmp ecx, edx
jb 0x4058cd
mov ecx, edx
shr ecx, 1
add ecx, edx
mov ebx, 2
cmovne ebx, ecx
mov dword [edi + 0x1c], ebx
shl ebx, 2
push ebx
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x40827a
test eax, eax
je 0x408293
mov dword [edi + 0x18], eax
mov ecx, dword [edi + 0x20]
lea edx, [ecx + 1]
mov dword [edi + 0x20], edx
mov dword [eax + ecx*4], esi
mov eax, dword [esi]
test eax, eax
je 0x405934
mov ecx, dword [esi + 8]
lea edx, [ecx + 1]
cmp edx, 1
mov edx, dword [esp + 0x18]
ja 0x40593a
mov ecx, esi
mov edi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x4058ed
cmp dword [edi], 0
je 0x405909
push eax
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [edi + 8]
inc eax
mov dword [edi + 8], eax
mov dword [esi + 8], eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, esi
mov edx, str.phandle
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, dword [esi + 8]
jmp 0x405936
xor ecx, ecx
mov edx, dword [esp + 0x18]
mov dword [edx + 8], ecx
mov esi, dword [esp + 4]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ecx
add eax, edi
mov eax, edx
adc eax, 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ecx
add edi, ecx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x38], edx
adc eax, edx
mov dword [esp + 0x34], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x2c], eax
and edi, 0xfffff000
mov dword [esp + 0x28], edi
mov eax, dword [esi + 0x58]
mov dword [esp + 0x24], eax
mov dword [esp], 0x30000000
xor edx, edx
jmp 0x4059aa
xor ecx, ecx
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
test cl, 1
mov dword [esp], edi
mov edx, ebx
jne 0x405a75
mov eax, dword [esp]
add eax, 0x10000000
mov ecx, edx
adc ecx, 0
cmp dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
sbb eax, ecx
jae 0x4059d2
mov eax, dword [esp]
cmp eax, dword [esp + 0x34]
mov eax, edx
sbb eax, dword [esp + 0x30]
jb 0x405992
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x2c]
test ecx, ecx
je 0x405a70
mov esi, dword [eax + 0x24]
mov dword [esp + 0x1c], ecx
mov cl, 1
nop word [eax + eax]
mov dword [esp + 8], esi
mov edi, dword [esi]
mov eax, dword [edi]
mov dword [esp + 0x18], eax
mov ebx, dword [edi + 4]
mov dword [esp + 0x14], ebx
mov edi, dword [edi + 8]
add edi, eax
adc ebx, 0
mov eax, dword [esp]
cmp eax, edi
mov dword [esp], eax
mov esi, edx
sbb esi, ebx
setb byte [esp + 0xc]
mov esi, eax
add esi, 0x10000000
mov eax, edx
adc eax, 0
cmp dword [esp + 0x18], esi
sbb dword [esp + 0x14], eax
mov esi, 0
setb al
add edi, 0xfff
adc ebx, 0
and edi, 0xfffff000
test byte [esp + 0xc], al
movzx ecx, cl
cmovne ecx, esi
cmove ebx, edx
cmove edi, dword [esp]
mov esi, dword [esp + 8]
add esi, 4
dec dword [esp + 0x1c]
mov dword [esp], edi
mov edx, ebx
jne 0x4059f0
jmp 0x40599c
mov edi, dword [esp]
mov ebx, edx
mov dword [esp], ebx
push 0xb8
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ebx, eax
mov eax, dword [esp + 4]
mov dword [ebx], eax
mov ecx, dword [esp + 0x24]
mov dword [ebx + 4], ecx
test ecx, ecx
je 0x405b3f
mov eax, 1
lock xadd dword [ecx + 4], eax
mov esi, 1
inc eax
cmp eax, 0x40
jb 0x405ace
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
mov ecx, dword [esp + 0x28]
add esp, 4
xor eax, eax
mov dword [ebx + 8], eax
lock xadd dword [ecx + 4], esi
inc esi
cmp esi, 0x40
jb 0x405aef
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
mov ecx, dword [esp + 0x28]
add esp, 4
xor esi, esi
mov dword [ebx + 0xc], esi
mov eax, 1
lock xadd dword [ecx + 4], eax
mov esi, 1
inc eax
cmp eax, 0x40
jb 0x405b1a
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
mov ecx, dword [esp + 0x28]
add esp, 4
xor eax, eax
mov dword [ebx + 0x10], eax
lock xadd dword [ecx + 4], esi
inc esi
cmp esi, 0x40
mov eax, dword [esp + 4]
jb 0x405b56
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
mov eax, dword [esp + 8]
add esp, 4
jmp 0x405b54
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], 0
xor esi, esi
mov dword [ebx + 0x14], esi
mov dword [ebx + 0x9c], 0
mov dword [ebx + 0x98], 0x3000000
mov dword [ebx + 0xa0], 0x10000
mov dword [ebx + 0xac], 0
mov dword [ebx + 0xa8], 0x40000000
mov dword [ebx + 0xb0], 0x40000000
mov word [ebx + 0xb4], 0x14
mov ecx, dword [esp]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edi
mov dword [esp + 0x50], 0x10000000
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0x43aa90
mov dword [esp + 0x64], 0x417f20
mov dword [esp + 0x68], 0x418040
mov word [esp + 0x6c], 0x404
lea edx, [esp + 0x48]
mov esi, eax
mov ecx, eax
call fcn.0040ee00
test eax, eax
je 0x406121
push 0x800
push 0
mov dword [esp + 0x10], ebx
lea ebx, [esp + 0x1f8]
push ebx
call sub.MSVCR70.dll_memset
add esp, 0xc
mov word [esp + 0x1f0], 0xf15e
mov word [esp + 0x1f4], 0x600
mov ebx, dword [esp + 8]
mov ecx, ebx
lea edx, [esp + 0x1f0]
call fcn.00418120
mov dword [esi + 0x5c], ebx
mov ecx, 0x43aaa0
mov edx, edi
mov ebx, dword [esp]
push ebx
call fcn.00402070
add esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 0x70], 0x3000000
mov ecx, eax
mov edx, str.address_cells
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x2000000
mov esi, dword [esp + 0xc]
mov ecx, esi
mov edx, str.size_cells
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x1000000
mov ecx, esi
mov edx, str.interrupt_cells
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.device_type
push 4
push 0x43aaa0
call fcn.00402500
add esp, 8
bswap edi
mov dword [esp + 0x74], edi
mov byte [esp + 0x73], bl
mov byte [esp + 0x72], bh
mov eax, ebx
shr eax, 0x10
mov byte [esp + 0x71], al
shr ebx, 0x18
mov byte [esp + 0x70], bl
mov ebx, esi
mov dword [esp + 0x7c], 0x10
mov dword [esp + 0x78], 0
mov ecx, esi
mov edx, 0x43ac95
push 0x10
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.compatible
push 0x16
push str.pci_host_ecam_generic
call fcn.00402500
add esp, 8
mov ecx, esi
mov edx, str.dma_coherent
push 0
push 0
call fcn.00402500
add esp, 8
push 4
push 2
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov esi, eax
mov dword [eax + 3], 0
mov byte [eax + 2], 0
mov word [eax], 0
mov byte [eax + 7], 0xff
mov ecx, ebx
mov edx, str.bus_range
push 8
push eax
call fcn.00402500
add esp, 8
push esi
call sub.MSVCR70.dll_free
add esp, 4
push 4
push 0xe
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
mov dword [eax + 3], 0
mov byte [eax + 2], 0
mov word [eax], 1
mov byte [eax + 7], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x11], 0
mov byte [eax + 0x10], 3
mov dword [eax + 0x16], 0x1000000
mov byte [eax + 0x15], 0
mov dword [eax + 0x1a], 0x20000
mov dword [eax + 0x1e], 0
mov dword [eax + 0x22], 0x400000
mov dword [eax + 0x26], 0
mov dword [eax + 0x2a], 0x400000
mov word [eax + 0x2e], 0
mov word [eax + 0x32], 0
mov byte [eax + 0x31], 0
mov byte [eax + 0x30], 0
mov dword [eax + 0x34], 0x40
mov ecx, ebx
mov edx, str.ranges
push 0x38
push eax
call fcn.00402500
add esp, 8
push edi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 0x24]
test eax, eax
je 0x405e30
mov eax, dword [eax + 8]
jmp 0x405e32
xor eax, eax
movaps xmm0, xmmword [0x4380a0]
movups xmmword [esp + 0x70], xmm0
mov dword [esp + 0x80], eax
mov edi, dword [esp + 8]
mov edx, dword [edi + 8]
mov dword [esp + 0x84], edx
movaps xmm0, xmmword [0x4380b0]
movups xmmword [esp + 0x88], xmm0
mov dword [esp + 0x98], eax
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x9c], ecx
movaps xmm0, xmmword [0x4380c0]
movups xmmword [esp + 0xa0], xmm0
mov dword [esp + 0xb0], eax
mov esi, dword [edi + 0x10]
mov dword [esp + 0xb4], esi
movaps xmm0, xmmword [0x4380d0]
movups xmmword [esp + 0xb8], xmm0
mov dword [esp + 0xc8], eax
mov edi, dword [edi + 0x14]
mov dword [esp + 0xcc], edi
movaps xmm0, xmmword [0x4380e0]
movups xmmword [esp + 0xd0], xmm0
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], ecx
movaps xmm0, xmmword [0x4380f0]
movups xmmword [esp + 0xe8], xmm0
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], esi
movaps xmm0, xmmword [0x438100]
movups xmmword [esp + 0x100], xmm0
mov dword [esp + 0x110], eax
mov dword [esp + 0x114], edi
movaps xmm0, xmmword [0x438110]
movups xmmword [esp + 0x118], xmm0
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], edx
movaps xmm0, xmmword [0x438120]
movups xmmword [esp + 0x130], xmm0
mov dword [esp + 0x140], eax
mov dword [esp + 0x144], esi
movaps xmm0, xmmword [0x438130]
movups xmmword [esp + 0x148], xmm0
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], edi
movaps xmm0, xmmword [0x438140]
movups xmmword [esp + 0x160], xmm0
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], edx
movaps xmm0, xmmword [0x438150]
movups xmmword [esp + 0x178], xmm0
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], ecx
movaps xmm0, xmmword [0x438160]
movups xmmword [esp + 0x190], xmm0
mov dword [esp + 0x1a0], eax
mov dword [esp + 0x1a4], edi
movaps xmm0, xmmword [0x438170]
movups xmmword [esp + 0x1a8], xmm0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], edx
movaps xmm0, xmmword [0x438180]
movups xmmword [esp + 0x1c0], xmm0
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x1d4], esi
movdqa xmm0, xmmword [0x438190]
movdqu xmmword [esp + 0x1d8], xmm0
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1ec], ecx
push 4
push 0x60
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
mov eax, 0xfffffe80
mov ecx, dword [esp + eax + 0x1f0]
bswap ecx
mov dword [edi + eax + 0x180], ecx
mov ecx, dword [esp + eax + 0x1f4]
bswap ecx
mov dword [edi + eax + 0x184], ecx
add eax, 8
jne 0x40602c
mov ecx, ebx
mov edx, str.interrupt_map
push 0x180
push edi
call fcn.00402500
add esp, 8
push edi
call sub.MSVCR70.dll_free
add esp, 4
push 4
push 4
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov esi, eax
mov dword [eax + 3], 0
mov byte [eax + 2], 0x18
mov word [eax], 0
mov byte [eax + 7], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0x7000000
mov ecx, ebx
mov edx, str.interrupt_map_mask
push 0x10
push eax
call fcn.00402500
add esp, 8
push esi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x40611d
mov dword [ebx + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x406114
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x408197
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], ebx
mov esi, dword [esp + 4]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov edi, dword [esi + 8]
mov eax, ecx
add eax, edi
mov eax, edx
adc eax, 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ecx
add edi, ecx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x38], edx
adc eax, edx
mov dword [esp + 0x34], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x2c], eax
and edi, 0xfffff000
mov dword [esp + 0x28], edi
mov eax, dword [esi + 0x58]
mov dword [esp + 0x24], eax
mov dword [esp], 0x10030000
xor ecx, ecx
jmp 0x406192
mov dword [esp + 8], 0
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
test byte [esp + 8], 1
mov dword [esp], ebx
mov ecx, edi
jne 0x406266
mov eax, dword [esp]
add eax, 0x14
mov edi, ecx
adc ecx, 0
cmp dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
sbb eax, ecx
jae 0x4061b8
mov eax, dword [esp]
cmp eax, dword [esp + 0x34]
mov eax, edi
sbb eax, dword [esp + 0x30]
jb 0x406172
mov eax, dword [esp + 4]
mov edx, dword [eax + 0x2c]
test edx, edx
je 0x406263
mov esi, dword [eax + 0x24]
mov al, 1
mov dword [esp + 8], eax
mov ecx, edi
nop word cs:[eax + eax]
nop dword [eax]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], esi
mov ebx, dword [esi]
mov eax, dword [ebx]
mov dword [esp + 0x1c], eax
mov edx, dword [ebx + 4]
mov ebx, dword [ebx + 8]
add ebx, eax
mov edi, edx
adc edi, 0
mov esi, dword [esp]
cmp esi, ebx
mov eax, ecx
sbb ecx, edi
setb byte [esp + 0x18]
mov ecx, esi
add ecx, 0x14
mov esi, eax
adc esi, 0
cmp dword [esp + 0x1c], ecx
sbb edx, esi
mov edx, 0
setb cl
add ebx, 0xfff
adc edi, 0
and ebx, 0xfffff000
test byte [esp + 0x18], cl
mov ecx, dword [esp + 8]
movzx ecx, cl
cmovne ecx, edx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0xc]
cmove edi, eax
cmove ebx, dword [esp]
mov esi, dword [esp + 0x14]
add esi, 4
dec edx
mov dword [esp], ebx
mov ecx, edi
jne 0x4061e0
jmp 0x406182
mov ebx, dword [esp]
mov dword [esp + 8], edi
xor ecx, ecx
mov eax, dword [esp + 0x24]
test eax, eax
je 0x406293
mov ecx, 1
lock xadd dword [eax + 4], ecx
inc ecx
cmp ecx, 0x40
jb 0x406293
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
add esp, 4
xor ecx, ecx
mov dword [esp + 0xc], ecx
push 0x28
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ecx, dword [esp + 0x24]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0xc]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x1f4], ecx
mov dword [esp + 0x1f0], ebx
mov dword [esp + 0x1f8], 0x14
mov dword [esp + 0x14], eax
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
mov dword [esp + 0x208], 0x440060
mov dword [esp + 0x20c], 0x416050
mov dword [esp + 0x210], 0x4160f0
mov word [esp + 0x214], 0x401
lea edx, [esp + 0x1f0]
mov esi, dword [esp + 4]
mov ecx, esi
call fcn.0040ee00
mov ecx, esi
test eax, eax
je 0x4066f1
mov esi, dword [ecx + 0xb4]
test esi, esi
je 0x406394
mov ecx, dword [esi + 0x20]
jmp 0x40635b
xor eax, eax
cmp al, byte [edx + str.i2c_oc_osc]
je 0x406498
sub ecx, 1
jb 0x406394
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov dword [esp], eax
mov edi, dword [eax]
movzx eax, byte [edi]
xor edx, edx
test al, al
je 0x40634d
nop word cs:[eax + eax]
nop
cmp al, byte [edx + str.i2c_oc_osc]
jne 0x40634f
movzx eax, byte [edi + edx + 1]
inc edx
test al, al
jne 0x406380
jmp 0x40634d
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
mov dword [esp], eax
test eax, eax
je 0x408293
push 0xb
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov dword [eax + 7], 0x63736f
mov dword [eax + 4], 0x6f5f636f
mov dword [eax], 0x5f633269
mov edi, dword [esp]
mov dword [edi], eax
mov ecx, edi
mov edx, str.compatible
push 0xc
push str.fixed_clock
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0
mov ecx, edi
mov edx, str.clock_cells
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x2d3101
mov ecx, edi
mov edx, str.clock_frequency
push 4
push esi
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.clock_output_names
push 4
push 0x43a956
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x406498
mov dword [edi + 4], esi
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
cmp edx, ecx
jb 0x40648c
mov edx, ecx
shr edx, 1
add edx, ecx
mov edi, 2
cmovne edi, edx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x40825f
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov edx, dword [esi + 0x20]
lea ecx, [edx + 1]
mov dword [esi + 0x20], ecx
mov ecx, dword [esp]
mov dword [eax + edx*4], ecx
mov ecx, 0x43a95a
mov edx, ebx
mov esi, dword [esp + 8]
push esi
call fcn.00402070
add esp, 4
bswap ebx
mov dword [esp + 0x74], ebx
mov ebx, eax
mov ecx, esi
mov byte [esp + 0x73], cl
mov byte [esp + 0x72], ch
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x71], al
shr ecx, 0x18
mov byte [esp + 0x70], cl
mov byte [esp + 0x7f], 0x14
mov dword [esp + 0x78], 0
mov dword [esp + 0x7b], 0
mov ecx, ebx
mov edx, 0x43ac95
push 0x10
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, ebx
mov edx, str.compatible
push 0x15
push str.opencores_i2c_ocores
call fcn.00402500
add esp, 8
xor esi, esi
mov ecx, dword [esp + 0x24]
test ecx, ecx
mov eax, 0
je 0x406521
mov eax, dword [ecx + 8]
bswap eax
mov dword [esp + 0x70], eax
mov ecx, ebx
mov edx, str.interrupt_parent
push 4
lea edi, [esp + 0x74]
push edi
call fcn.00402500
add esp, 8
mov eax, dword [esp + 0xc]
mov byte [esp + 0x73], al
mov byte [esp + 0x72], 0
mov word [esp + 0x70], 0
mov ecx, ebx
mov edx, str.interrupts
push 4
push edi
call fcn.00402500
add esp, 8
mov edi, dword [esp]
mov eax, dword [edi]
test eax, eax
je 0x4065be
mov esi, dword [edi + 8]
lea ecx, [esi + 1]
cmp ecx, 1
ja 0x4065be
mov ecx, edi
mov esi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x406579
cmp dword [esi], 0
je 0x406595
push eax
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov dword [edi + 8], eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, edi
mov edx, str.phandle
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov esi, dword [edi + 8]
bswap esi
mov dword [esp + 0x70], esi
mov ecx, ebx
mov edx, str.clocks
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov ecx, ebx
mov edx, str.clock_names
push 4
push 0x43a956
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x2000000
mov ecx, ebx
mov edx, str.reg_shift
push 4
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x1000000
mov ecx, ebx
mov edx, str.reg_io_width
push 4
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x2d3101
mov ecx, ebx
mov edx, str.opencores_ip_clock_frequency
push 4
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x1000000
mov ecx, ebx
mov edx, str.address_cells
push 4
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0
mov ecx, ebx
mov edx, str.size_cells
push 4
push esi
call fcn.00402500
add esp, 8
mov ecx, ebx
mov edx, str.status
push 5
push str.okay
call fcn.00402500
add esp, 8
mov ecx, dword [esp + 4]
mov esi, dword [ecx + 0xb4]
test esi, esi
je 0x4066e7
mov dword [ebx + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x4066da
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x4081b5
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], ebx
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x14]
mov dword [eax + 0x10], ebx
mov dword [ecx + 0x60], eax
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov eax, edx
add eax, edi
mov eax, esi
adc eax, 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], edx
add edi, edx
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x34], esi
adc eax, esi
mov dword [esp + 0x30], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x28], eax
and edi, 0xfffff000
mov dword [esp + 0x24], edi
mov eax, dword [ecx + 0x58]
mov dword [esp + 0x40], eax
mov edx, 0x101000
xor esi, esi
jmp 0x406757
xor ecx, ecx
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
test cl, 1
mov edx, edi
mov esi, ebx
jne 0x406823
mov eax, edx
add eax, 0x20
mov ecx, esi
adc ecx, 0
cmp dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
sbb eax, ecx
jae 0x406779
cmp edx, dword [esp + 0x30]
mov eax, esi
sbb eax, dword [esp + 0x2c]
jb 0x406740
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x2c]
test ecx, ecx
je 0x40681f
mov eax, dword [eax + 0x24]
mov dword [esp + 0x20], ecx
mov cl, 1
nop word cs:[eax + eax]
nop dword [eax + eax]
mov dword [esp], eax
mov edi, dword [eax]
mov ebx, dword [edi]
mov dword [esp + 0x1c], ebx
mov eax, dword [edi + 4]
mov dword [esp + 0x18], eax
mov edi, dword [edi + 8]
add edi, ebx
mov ebx, eax
adc ebx, 0
cmp edx, edi
mov dword [esp + 8], edx
mov eax, esi
mov dword [esp + 0xc], esi
sbb esi, ebx
setb byte [esp + 0x14]
mov esi, edx
add esi, 0x20
adc eax, 0
cmp dword [esp + 0x1c], esi
sbb dword [esp + 0x18], eax
mov edx, 0
setb al
add edi, 0xfff
adc ebx, 0
and edi, 0xfffff000
test byte [esp + 0x14], al
mov eax, dword [esp]
movzx ecx, cl
cmovne ecx, edx
cmove ebx, dword [esp + 0xc]
cmove edi, dword [esp + 8]
add eax, 4
dec dword [esp + 0x20]
mov edx, edi
mov esi, ebx
jne 0x4067a0
jmp 0x40674a
mov edi, edx
mov ebx, esi
xor ecx, ecx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40684c
mov ecx, 1
lock xadd dword [eax + 4], ecx
inc ecx
cmp ecx, 0x40
jb 0x40684c
push str.Ran_out_of_PLIC_interrupt_IDs
call fcn.00410c10
add esp, 4
xor ecx, ecx
mov dword [esp], ecx
push 0x14
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov esi, dword [esp + 0x40]
mov dword [eax], esi
mov ecx, dword [esp]
mov dword [eax + 4], ecx
mov dword [esp + 0x1f4], ebx
mov dword [esp + 0x1f0], edi
mov dword [esp + 0x1f8], 0x20
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
mov dword [esp + 0x208], 0x4400a0
mov dword [esp + 0x20c], 0x419aa0
mov dword [esp + 0x210], 0x419b10
mov word [esp + 0x214], 0x404
lea edx, [esp + 0x1f0]
mov ecx, dword [esp + 4]
call fcn.0040ee00
test eax, eax
je 0x406a04
mov ecx, 0x43ac00
mov edx, edi
push ebx
call fcn.00402070
add esp, 4
bswap edi
mov dword [esp + 0x74], edi
mov byte [esp + 0x73], bl
mov byte [esp + 0x72], bh
mov ecx, ebx
shr ecx, 0x10
mov byte [esp + 0x71], cl
shr ebx, 0x18
mov byte [esp + 0x70], bl
mov ebx, eax
mov byte [esp + 0x7f], 0x20
mov dword [esp + 0x78], 0
mov dword [esp + 0x7b], 0
mov ecx, eax
mov edx, 0x43ac95
push 0x10
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, ebx
mov edx, str.compatible
push 0x14
push str.google_goldfish_rtc
call fcn.00402500
add esp, 8
test esi, esi
je 0x406962
mov eax, dword [esi + 8]
jmp 0x406964
xor eax, eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, ebx
mov edx, str.interrupt_parent
push 4
lea edi, [esp + 0x74]
push edi
call fcn.00402500
add esp, 8
mov eax, dword [esp]
mov byte [esp + 0x73], al
mov byte [esp + 0x72], 0
mov word [esp + 0x70], 0
mov ecx, ebx
mov edx, str.interrupts
push 4
push edi
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov edi, dword [eax + 0xb4]
test edi, edi
je 0x406a04
mov dword [ebx + 4], edi
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
cmp ecx, edx
jb 0x4069fb
mov esi, ebx
mov ecx, edx
shr ecx, 1
add ecx, edx
mov ebx, 2
cmovne ebx, ecx
mov dword [edi + 0x1c], ebx
shl ebx, 2
push ebx
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test ebx, ebx
je 0x4081d3
test eax, eax
je 0x408293
mov dword [edi + 0x18], eax
mov ecx, dword [edi + 0x20]
mov ebx, esi
lea edx, [ecx + 1]
mov dword [edi + 0x20], edx
mov dword [eax + ecx*4], ebx
mov ecx, dword [esp + 4]
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov eax, edx
add eax, edi
mov eax, esi
adc eax, 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], edx
add edi, edx
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x38], esi
adc eax, esi
mov dword [esp + 0x34], edi
add edi, 0xfff
adc eax, 0
mov dword [esp + 0x2c], eax
and edi, 0xfffff000
mov dword [esp + 0x28], edi
mov dword [esp], 0x100000
xor ecx, ecx
jmp 0x406a72
mov dword [esp + 8], 0
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
test byte [esp + 8], 1
mov dword [esp], ebx
mov ecx, esi
jne 0x406b4d
mov eax, dword [esp]
add eax, 0x1000
mov esi, ecx
adc ecx, 0
cmp dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
sbb eax, ecx
jae 0x406a9a
mov eax, dword [esp]
cmp eax, dword [esp + 0x34]
mov eax, esi
sbb eax, dword [esp + 0x30]
jb 0x406a52
mov eax, dword [esp + 4]
mov edx, dword [eax + 0x2c]
test edx, edx
je 0x406b4a
mov edi, dword [eax + 0x24]
mov al, 1
mov dword [esp + 8], eax
mov ecx, esi
nop word cs:[eax + eax]
nop
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], edi
mov ebx, dword [edi]
mov eax, dword [ebx]
mov dword [esp + 0x1c], eax
mov edx, dword [ebx + 4]
mov ebx, dword [ebx + 8]
add ebx, eax
mov esi, edx
adc esi, 0
mov edi, dword [esp]
cmp edi, ebx
mov eax, ecx
sbb ecx, esi
setb byte [esp + 0x18]
mov ecx, edi
add ecx, 0x1000
mov edi, eax
adc edi, 0
cmp dword [esp + 0x1c], ecx
sbb edx, edi
mov edx, 0
setb cl
add ebx, 0xfff
adc esi, 0
and ebx, 0xfffff000
test byte [esp + 0x18], cl
mov ecx, dword [esp + 8]
movzx ecx, cl
cmovne ecx, edx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0xc]
cmove esi, eax
cmove ebx, dword [esp]
mov edi, dword [esp + 0x14]
add edi, 4
dec edx
mov dword [esp], ebx
mov ecx, esi
jne 0x406ac0
jmp 0x406a62
mov ebx, dword [esp]
mov dword [esp + 0x1f0], ebx
mov edi, esi
mov dword [esp + 0x1f4], esi
mov dword [esp + 0x1f8], 0x1000
mov dword [esp + 0x1fc], 0
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
mov dword [esp + 0x208], 0x4400c0
mov dword [esp + 0x20c], 0x40d590
mov dword [esp + 0x210], 0x41b480
mov word [esp + 0x214], 0x202
lea edx, [esp + 0x1f0]
mov ecx, dword [esp + 4]
call fcn.0040ee00
test eax, eax
je 0x406f55
mov ecx, str.test
mov edx, ebx
mov esi, edi
push edi
call fcn.00402070
add esp, 4
mov edi, eax
bswap ebx
mov dword [esp + 0x74], ebx
mov ecx, esi
mov byte [esp + 0x73], cl
mov byte [esp + 0x72], ch
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x71], al
shr ecx, 0x18
mov byte [esp + 0x70], cl
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0x100000
mov ecx, edi
mov edx, 0x43ac95
push 0x10
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, edi
mov edx, str.compatible
push 0x21
push str.sifive_test1
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x406c9b
mov dword [edi + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x406c92
mov ebx, edi
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x4081f1
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
mov edi, ebx
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], edi
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ebx, eax
push 9
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov byte [eax + 8], 0
mov dword [eax + 4], 0x66666f72
mov dword [eax], 0x65776f70
mov dword [ebx], eax
mov ecx, ebx
mov edx, str.compatible
push 0x10
push str.syscon_poweroff
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x55550000
mov ecx, ebx
mov edx, str.value
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0
mov ecx, ebx
mov edx, str.offset
push 4
push esi
call fcn.00402500
add esp, 8
mov eax, dword [edi]
test eax, eax
je 0x406d7e
mov ecx, dword [edi + 8]
lea edx, [ecx + 1]
cmp edx, 1
ja 0x406d80
mov ecx, edi
mov esi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x406d37
cmp dword [esi], 0
je 0x406d53
push eax
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov dword [edi + 8], eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, edi
mov edx, str.phandle
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, dword [edi + 8]
jmp 0x406d80
xor ecx, ecx
bswap ecx
mov dword [esp + 0x70], ecx
mov ecx, ebx
mov edx, str.regmap
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x406dfd
mov dword [ebx + 4], esi
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
cmp edx, ecx
jb 0x406df4
mov dword [esp], edi
mov edx, ecx
shr edx, 1
add edx, ecx
mov edi, 2
cmovne edi, edx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x40820f
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov edx, dword [esi + 0x20]
mov edi, dword [esp]
lea ecx, [edx + 1]
mov dword [esi + 0x20], ecx
mov dword [eax + edx*4], ebx
push 0x24
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov ebx, eax
push 7
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x408293
mov dword [eax + 3], 0x746f6f
mov dword [eax], 0x6f626572
mov dword [ebx], eax
mov ecx, ebx
mov edx, str.compatible
push 0xe
push str.syscon_reboot
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0x77770000
mov ecx, ebx
mov edx, str.value
push 4
lea esi, [esp + 0x74]
push esi
call fcn.00402500
add esp, 8
mov dword [esp + 0x70], 0
mov ecx, ebx
mov edx, str.offset
push 4
push esi
call fcn.00402500
add esp, 8
mov eax, dword [edi]
test eax, eax
je 0x406edc
mov ecx, dword [edi + 8]
lea edx, [ecx + 1]
cmp edx, 1
ja 0x406ede
mov ecx, edi
mov esi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x406e95
cmp dword [esi], 0
je 0x406eb1
push eax
push str.fdt_node_get_phandle__s_:_Invalid_hierarchy
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov dword [edi + 8], eax
bswap eax
mov dword [esp + 0x70], eax
mov ecx, edi
mov edx, str.phandle
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov ecx, dword [edi + 8]
jmp 0x406ede
xor ecx, ecx
bswap ecx
mov dword [esp + 0x70], ecx
mov ecx, ebx
mov edx, str.regmap
push 4
lea eax, [esp + 0x74]
push eax
call fcn.00402500
add esp, 8
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xb4]
test esi, esi
je 0x406f55
mov dword [ebx + 4], esi
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jb 0x406f4c
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [esi + 0x1c], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x40822a
test eax, eax
je 0x408293
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x20]
lea edx, [ecx + 1]
mov dword [esi + 0x20], edx
mov dword [eax + ecx*4], ebx
mov esi, dword [0x440164]
test esi, esi
jle 0x406fcf
mov eax, dword [0x440168]
mov edi, dword [eax]
test edi, edi
je 0x406fcf
mov dl, 1
mov ecx, 1
cmp byte [edi], 0x2d
jne 0x406fc0
xor ebx, ebx
cmp byte [edi + 1], 0x2d
sete bl
cmp byte [edi + ebx + 1], 0x73
jne 0x406fc0
inc ebx
cmp byte [edi + ebx + 1], 0x65
jne 0x406fc0
cmp byte [edi + ebx + 2], 0x72
jne 0x406fc0
cmp byte [edi + ebx + 3], 0x69
jne 0x406fc0
cmp byte [edi + ebx + 4], 0x61
jne 0x406fc0
cmp byte [edi + ebx + 5], 0x6c
jne 0x406fc0
movzx edi, byte [edi + ebx + 6]
test edi, edi
je 0x408019
cmp edi, 0x3d
je 0x408019
cmp esi, ecx
je 0x406fcf
setg dl
mov edi, dword [eax + ecx*4]
inc ecx
test edi, edi
jne 0x406f71
call fcn.00412f70
mov ecx, dword [esp + 4]
mov edx, eax
call fcn.00416630
mov esi, dword [0x440164]
test esi, esi
jle 0x407052
mov eax, dword [0x440168]
mov edi, dword [eax]
test edi, edi
je 0x407052
mov dl, 1
mov ecx, 1
cmp byte [edi], 0x2d
jne 0x407043
xor ebx, ebx
cmp byte [edi + 1], 0x2d
sete bl
cmp byte [edi + ebx + 1], 0x6e
jne 0x407043
inc ebx
cmp byte [edi + ebx + 1], 0x6f
jne 0x407043
cmp byte [edi + ebx + 2], 0x67
jne 0x407043
cmp byte [edi + ebx + 3], 0x75
jne 0x407043
cmp byte [edi + ebx + 4], 0x69
jne 0x407043
movzx edi, byte [edi + ebx + 5]
test edi, edi
je 0x407fdf
cmp edi, 0x3d
je 0x407fdf
cmp esi, ecx
je 0x407052
setg dl
mov edi, dword [eax + ecx*4]
inc ecx
test edi, edi
jne 0x406ffb
mov ecx, 0x4388ae
call fcn.00411090
test al, al
jne 0x40707c
mov ecx, dword [esp + 4]
mov edx, 0x280
push 0x1e0
call fcn.00413d20
add esp, 4
mov esi, dword [0x440164]
test esi, esi
jle 0x4070e9
mov eax, dword [0x440168]
mov edi, dword [eax]
test edi, edi
je 0x4070e9
mov dl, 1
mov ecx, 1
cmp byte [edi], 0x2d
jne 0x4070da
xor ebx, ebx
cmp byte [edi + 1], 0x2d
sete bl
cmp byte [edi + ebx + 1], 0x6e
jne 0x4070da
inc ebx
cmp byte [edi + ebx + 1], 0x6f
jne 0x4070da
cmp byte [edi + ebx + 2], 0x6e
jne 0x4070da
cmp byte [edi + ebx + 3], 0x65
jne 0x4070da
cmp byte [edi + ebx + 4], 0x74
jne 0x4070da
movzx edi, byte [edi + ebx + 5]
test edi, edi
je 0x407fed
cmp edi, 0x3d
je 0x407fed
cmp esi, ecx
je 0x4070e9
setg dl
mov edi, dword [eax + ecx*4]
inc ecx
test edi, edi
jne 0x407092
call fcn.0042b380
mov edx, eax
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x5c]
mov dword [esp + 0x14], edx
call fcn.00419bc0
mov ecx, dword [esp + 4]
mov edx, str.root_dev_nvme0n1_rootflagsdiscard_rw
call fcn.0040d5e0
mov eax, dword [0x440164]
test eax, eax
jle 0x4073e9
xor ecx, ecx
mov edx, dword [0x440168]
mov dword [esp], edx
jmp 0x40713a
cmp bl, 0x3d
je 0x407277
inc ecx
cmp eax, ecx
je 0x40729c
mov edx, dword [esp]
mov edi, dword [edx + ecx*4]
test edi, edi
je 0x40729c
cmp byte [edi], 0x2d
jne 0x407131
xor edx, edx
cmp byte [edi + 1], 0x2d
sete dl
lea esi, [edi + edx + 1]
mov dword [esp + 8], esi
movzx ebx, byte [edi + edx + 1]
xor esi, esi
test ebx, ebx
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x63
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 1]
test ebx, ebx
mov esi, 1
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x6d
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 2]
test ebx, ebx
mov esi, 2
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x64
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 3]
test ebx, ebx
mov esi, 3
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x6c
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 4]
test ebx, ebx
mov esi, 4
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x69
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 5]
test ebx, ebx
mov esi, 5
je 0x407128
cmp ebx, 0x3d
je 0x407128
cmp ebx, 0x6e
jne 0x407131
mov esi, dword [esp + 8]
movzx ebx, byte [esi + 6]
test ebx, ebx
mov esi, 6
je 0x407128
mov ecx, dword [esp + 8]
add ecx, esi
cmp ecx, 0xffffffff
je 0x40729c
mov ecx, str.cmdline
call fcn.00411160
mov ecx, dword [esp + 4]
mov edx, eax
call fcn.0040d5b0
mov eax, dword [0x440164]
test eax, eax
jle 0x4073e9
mov ecx, dword [0x440168]
add ecx, 4
jmp 0x4072c2
cmp bl, 0x3d
je 0x4073ca
add ecx, 4
dec eax
je 0x4073e9
mov esi, dword [ecx - 4]
test esi, esi
je 0x4073e9
cmp byte [esi], 0x2d
jne 0x4072b8
xor edx, edx
cmp byte [esi + 1], 0x2d
sete dl
lea edi, [esi + edx + 1]
mov dword [esp], edi
movzx ebx, byte [esi + edx + 1]
xor edi, edi
test ebx, ebx
je 0x4072af
cmp ebx, 0x3d
je 0x4072af
cmp ebx, 0x61
jne 0x4072b8
mov edi, dword [esp]
movzx ebx, byte [edi + 1]
test ebx, ebx
mov edi, 1
je 0x4072af
cmp ebx, 0x3d
je 0x4072af
cmp ebx, 0x70
jne 0x4072b8
mov edi, dword [esp]
movzx ebx, byte [edi + 2]
test ebx, ebx
mov edi, 2
je 0x4072af
cmp ebx, 0x3d
je 0x4072af
cmp ebx, 0x70
jne 0x4072b8
mov edi, dword [esp]
movzx ebx, byte [edi + 3]
test ebx, ebx
mov edi, 3
je 0x4072af
cmp ebx, 0x3d
je 0x4072af
cmp ebx, 0x65
jne 0x4072b8
mov edi, dword [esp]
movzx ebx, byte [edi + 4]
test ebx, ebx
mov edi, 4
je 0x4072af
cmp ebx, 0x3d
je 0x4072af
cmp ebx, 0x6e
jne 0x4072b8
mov edi, dword [esp]
movzx ebx, byte [edi + 5]
test ebx, ebx
mov edi, 5
je 0x4072af
mov eax, dword [esp]
add eax, edi
cmp eax, 0xffffffff
je 0x4073e9
mov ecx, str.append
call fcn.00411160
mov ecx, dword [esp + 4]
mov edx, eax
call fcn.0040d5e0
mov eax, dword [esp + 4]
lea ecx, [eax + 0x4c]
mov edx, dword [esp + 0x3c]
push dword [eax + 8]
call fcn.0040d750
add esp, 4
test al, al
mov edi, dword [esp + 0x10]
lea ebx, [esp + 0x1f0]
je 0x407b9c
mov ecx, 0x43995a
call fcn.00411160
test eax, eax
je 0x40746d
mov ebx, dword [esp + 4]
cmp byte [ebx + 0x48], 0
mov ecx, 0x400000
mov edx, 0x200000
cmove edx, ecx
mov ecx, dword [ebx + 8]
mov esi, edx
sub esi, ecx
neg esi
cmp edx, ecx
mov ecx, 0
sbb ecx, dword [ebx + 0xc]
mov ecx, 0
cmovae esi, ecx
lea ecx, [ebx + 0x50]
lea ebx, [esp + 0x1f0]
mov edx, eax
push esi
call fcn.0040d750
add esp, 4
test al, al
je 0x407b9c
mov ecx, str.kernel
call fcn.00411160
test eax, eax
je 0x4074c8
mov ebx, dword [esp + 4]
cmp byte [ebx + 0x48], 0
mov ecx, 0x400000
mov edx, 0x200000
cmove edx, ecx
mov ecx, dword [ebx + 8]
mov esi, edx
sub esi, ecx
neg esi
cmp edx, ecx
mov ecx, 0
sbb ecx, dword [ebx + 0xc]
mov ecx, 0
cmovae esi, ecx
lea ecx, [ebx + 0x50]
lea ebx, [esp + 0x1f0]
mov edx, eax
push esi
call fcn.0040d750
add esp, 4
test al, al
je 0x407b9c
mov ecx, 0x439963
call fcn.00411160
test eax, eax
je 0x4074fc
mov esi, dword [esp + 4]
mov ecx, esi
add ecx, 0x54
mov edx, dword [esi + 8]
mov esi, dword [esi + 0xc]
shld esi, edx, 0x1f
mov edx, eax
push esi
call fcn.0040d750
add esp, 4
test al, al
je 0x407b9c
mov esi, 1
mov ecx, dword [edi + esi*4]
mov eax, str.bootrom
cmp byte [ecx], 0x2d
jne 0x407552
xor eax, eax
cmp byte [ecx + 1], 0x2d
sete al
lea eax, [ecx + eax + 1]
xor ecx, ecx
movzx edx, byte [eax + ecx]
test edx, edx
je 0x407533
cmp edx, 0x3d
je 0x40755e
inc ecx
movzx edx, byte [eax + ecx]
test edx, edx
jne 0x407525
mov edi, dword [edi + esi*4 + 4]
test edi, edi
je 0x407564
xor edx, edx
cmp byte [edi], 0x2d
mov ecx, 0x438879
cmove edi, ecx
setne dl
inc edx
mov dword [esp + 8], edx
jmp 0x407571
mov dword [esp + 8], 1
mov edi, ecx
jmp 0x407571
lea edi, [eax + ecx + 1]
jmp 0x407569
mov edi, 0x438879
mov dword [esp + 8], 1
mov dword [esp], esi
movzx ecx, byte [eax]
test cl, cl
je 0x407596
lea esi, [eax + 1]
mov edx, 0x439967
mov ch, cl
movzx ebx, byte [edx]
cmp ch, bl
jne 0x4075a2
inc edx
mov ch, byte [esi]
inc esi
test ch, ch
jne 0x407585
jmp 0x40759b
mov edx, 0x439967
movzx ebx, byte [edx]
mov dl, 1
jmp 0x4075a8
cmp ch, 0x3d
sete dl
test bl, bl
jne 0x4075b0
test dl, dl
jne 0x40762a
test cl, cl
je 0x4075cf
lea esi, [eax + 1]
mov edx, str.image
mov ch, cl
movzx ebx, byte [edx]
cmp ch, bl
jne 0x4075db
inc edx
mov ch, byte [esi]
inc esi
test ch, ch
jne 0x4075be
jmp 0x4075d4
mov edx, str.image
movzx ebx, byte [edx]
mov dl, 1
jmp 0x4075e1
cmp ch, 0x3d
sete dl
test bl, bl
jne 0x4075e9
test dl, dl
jne 0x40762a
test cl, cl
je 0x407608
lea esi, [eax + 1]
mov edx, str.nvme
mov ch, cl
movzx ebx, byte [edx]
cmp ch, bl
jne 0x407614
inc edx
mov ch, byte [esi]
inc esi
test ch, ch
jne 0x4075f7
jmp 0x40760d
mov edx, str.nvme
movzx ebx, byte [edx]
mov dl, 1
jmp 0x40761a
cmp ch, 0x3d
sete dl
test bl, bl
jne 0x4078f4
test dl, dl
je 0x4078f4
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x5c]
mov dword [esp + 0x3c], eax
mov ecx, edi
call fcn.004018f0
test eax, eax
lea ebx, [esp + 0x1f0]
je 0x407b8e
mov esi, eax
mov dword [esp + 0xc], edi
push 0x268
push 1
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x408293
mov edi, eax
mov dword [eax], esi
mov ecx, 0x3b9aca00
xor edx, edx
call fcn.0040d0a0
add eax, dword [0x456328]
mov ebx, edx
adc ebx, dword [0x45632c]
mov ecx, ebx
shr ecx, 0x11
xor ecx, ebx
shld ebx, eax, 0xf
xor ebx, eax
mov esi, ecx
shld esi, ebx, 0x15
mov edx, ebx
shl edx, 0x15
xor esi, ecx
xor edx, ebx
mov eax, esi
shld eax, edx, 0x1c
shl ebx, 0x1c
xor eax, esi
xor ebx, edx
mov ecx, eax
shr ecx, 0x11
mov esi, ecx
xor esi, ebx
movd xmm0, eax
movd xmm1, esi
punpckldq xmm1, xmm0
movdqa xmm0, xmm1
pxor xmm2, xmm2
punpcklbw xmm0, xmm2
pmullw xmm0, xmmword [0x4381a0]
psrlw xmm0, 8
packuswb xmm0, xmm2
psrlw xmm0, 5
pand xmm0, xmmword [str._a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a]
movdqa xmm2, xmm0
punpckhbw xmm2, xmm2
movdqa xmm3, xmmword [0x4381c0]
pmullw xmm2, xmm3
movdqa xmm4, xmmword [0x4381d0]
pand xmm2, xmm4
punpcklbw xmm0, xmm0
pmullw xmm0, xmm3
pand xmm0, xmm4
packuswb xmm0, xmm2
psubb xmm1, xmm0
movdqa xmm0, xmm1
pcmpgtb xmm0, xmmword [str._t_t_t_t_t_t_t_t]
movdqa xmm2, xmm1
paddb xmm2, xmmword [str.77777777]
por xmm1, xmmword [str.00000000]
pand xmm2, xmm0
pandn xmm0, xmm1
por xmm0, xmm2
shrd ebx, eax, 0x11
xor ecx, eax
xor ebx, esi
mov edx, ecx
shld edx, ebx, 0x15
mov esi, ebx
shl esi, 0x15
xor esi, ebx
xor edx, ecx
mov eax, edx
shld eax, esi, 0x1c
xor eax, edx
shl ebx, 0x1c
xor ebx, esi
mov ecx, eax
shr ecx, 0x11
xor ecx, ebx
mov dword [0x456328], ecx
mov dword [edi + 0x24], ecx
movzx edx, cl
imul edx, edx, 0xeb
shr edx, 0xd
imul edx, edx, 0x23
sub cl, dl
mov edx, ecx
add dl, 0x37
mov dh, cl
or dh, 0x30
cmp cl, 0xa
movzx ecx, dh
movzx edx, dl
cmovb edx, ecx
movq qword [edi + 0x1c], xmm0
mov byte [edi + 0x24], dl
movzx ecx, byte [edi + 0x25]
imul edx, ecx, 0xeb
shr edx, 0xd
imul edx, edx, 0x23
sub cl, dl
mov edx, ecx
add dl, 0x37
mov dh, cl
or dh, 0x30
cmp cl, 0xa
movzx ecx, dh
movzx edx, dl
cmovb edx, ecx
mov dword [0x45632c], eax
mov byte [edi + 0x25], dl
movzx eax, byte [edi + 0x26]
imul ecx, eax, 0xeb
shr ecx, 0xd
imul ecx, ecx, 0x23
sub al, cl
mov ecx, eax
add cl, 0x37
mov edx, eax
or dl, 0x30
cmp al, 0xa
movzx eax, dl
movzx ecx, cl
cmovb ecx, eax
mov byte [edi + 0x26], cl
movzx eax, byte [edi + 0x27]
imul ecx, eax, 0xeb
shr ecx, 0xd
imul ecx, ecx, 0x23
sub al, cl
mov ecx, eax
add cl, 0x37
mov edx, eax
or dl, 0x30
cmp al, 0xa
movzx eax, dl
movzx ecx, cl
cmovb ecx, eax
mov byte [edi + 0x27], cl
push 0x800
push 0
lea ebx, [esp + 0x1f8]
push ebx
call sub.MSVCR70.dll_memset
add esp, 0xc
mov dword [esp + 0x1f0], 0xa809144d
mov word [esp + 0x1f4], 0x108
mov byte [esp + 0x1f6], 2
mov byte [esp + 0x1f8], 1
mov dword [esp + 0x204], 0
mov dword [esp + 0x200], 0x64646464
mov dword [esp + 0x208], 0x4000
mov dword [esp + 0x20c], edi
mov dword [esp + 0x218], 0x440080
mov dword [esp + 0x21c], 0x416a90
mov dword [esp + 0x220], 0x416ba0
mov word [esp + 0x224], 0x404
mov ecx, dword [esp + 0x3c]
mov edx, ebx
call fcn.00418120
test eax, eax
je 0x407b8a
mov dword [edi + 4], eax
mov edi, dword [esp + 0x10]
mov esi, dword [esp]
add esi, dword [esp + 8]
cmp esi, dword [esp + 0x44]
jl 0x407501
jmp 0x407b57
test cl, cl
je 0x407913
lea esi, [eax + 1]
mov edx, 0x43998b
mov ch, cl
movzx ebx, byte [edx]
cmp ch, bl
jne 0x40791f
inc edx
mov ch, byte [esi]
inc esi
test ch, ch
jne 0x407902
jmp 0x407918
mov edx, 0x43998b
movzx ebx, byte [edx]
mov dl, 1
jmp 0x407925
cmp ch, 0x3d
sete dl
test bl, bl
mov esi, dword [esp]
jne 0x407954
test dl, dl
je 0x407954
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x5c]
mov edx, edi
call fcn.00412e20
test al, al
mov eax, edi
mov edi, dword [esp + 0x10]
lea ebx, [esp + 0x1f0]
jne 0x4078e1
jmp 0x408003
test cl, cl
je 0x407973
lea esi, [eax + 1]
mov edx, str.serial
mov ch, cl
movzx ebx, byte [edx]
cmp ch, bl
jne 0x40797f
inc edx
mov ch, byte [esi]
inc esi
test ch, ch
jne 0x407962
jmp 0x407978
mov edx, str.serial
movzx ebx, byte [edx]
mov dl, 1
jmp 0x407985
cmp ch, 0x3d
sete dl
test bl, bl
mov esi, dword [esp]
jne 0x4079b8
test dl, dl
je 0x4079b8
test cl, cl
je 0x4079d7
mov edi, dword [esp + 0xc]
push edi
push str.Failed_to_attach_image___s_
call fcn.00410c50
add esp, 8
push str.Failed_to_initialize_VM
call fcn.00410c50
add esp, 4
mov esi, dword [esp + 4]
mov ecx, esi
call fcn.0040ec50
call fcn.0040e420
mov eax, esi
mov esi, dword [esi + 0x2c]
test esi, esi
jne 0x407daf
cmp dword [eax + 0x20], 0
je 0x407e3b
xor edi, edi
jmp 0x407bf4
push esi
call sub.MSVCR70.dll_free
add esp, 4
push ebx
call sub.MSVCR70.dll_free
add esp, 4
inc edi
mov eax, dword [esp + 4]
cmp edi, dword [eax + 0x20]
jae 0x407e3b
mov eax, dword [eax + 0x18]
mov ebx, dword [eax + edi*4]
cmp byte [ebx + 0x35a8], 0
je 0x407d42
mov dword [esp + 8], edi
mov ecx, dword [ebx + 0x33b0]
mov edx, dword [ebx + 0x33bc]
call fcn.00411940
mov ecx, dword [ebx + 0x33b4]
cmp ecx, dword [ebx + 0x33b0]
je 0x407c35
mov edx, dword [ebx + 0x33bc]
call fcn.00411940
lea eax, [ebx + 0x33d0]
mov dword [esp], eax
mov eax, dword [ebx + 0x33d0]
lea ecx, [eax + 4]
xor esi, esi
jmp 0x407c63
inc esi
mov edx, dword [ebx + 0x33d4]
mov ecx, edx
and ecx, esi
lea ecx, [eax + ecx*8 + 4]
cmp esi, edx
ja 0x407c83
mov edi, dword [ecx]
test edi, edi
je 0x407c50
push dword [edi]
call sub.MSVCR70.dll_free
add esp, 4
push edi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp]
mov eax, dword [eax]
jmp 0x407c50
mov esi, dword [esp]
mov ecx, esi
call fcn.00402f80
push dword [ebx + 0x33c0]
call sub.MSVCR70.dll_free
add esp, 4
pxor xmm0, xmm0
movq qword [ebx + 0x33c8], xmm0
movq qword [ebx + 0x33c0], xmm0
push dword [ebx + 0x33d0]
call sub.MSVCR70.dll_free
add esp, 4
pxor xmm0, xmm0
movq qword [esi + 8], xmm0
movq qword [esi], xmm0
push dword [ebx + 0x33f8]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebx + 0x33f8], 0
mov dword [ebx + 0x33fc], 0
mov dword [ebx + 0x3400], 0
push dword [ebx + 0x33ec]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebx + 0x33ec], 0
push dword [ebx + 0x33e4]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebx + 0x33e4], 0
push dword [ebx + 0x33e0]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebx + 0x33e0], 0
mov edi, dword [esp + 8]
mov esi, dword [ebx + 0x35b0]
test esi, esi
je 0x407bdd
mov eax, dword [esi + 4]
test eax, eax
je 0x407d65
push eax
push str.Destroying_a_condvar_with__u_waiters_
call fcn.00410c10
add esp, 8
mov eax, dword [esi + 8]
test eax, eax
je 0x407d73
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi + 0xc]
test eax, eax
je 0x407bd4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x407bd4
push dword [esp + 0x1fc]
call sub.MSVCR70.dll_free
add esp, 4
dec esi
push edi
call sub.MSVCR70.dll_free
add esp, 4
test esi, esi
mov eax, dword [esp + 4]
je 0x407bc6
mov eax, dword [eax + 0x24]
mov edi, dword [eax + esi*4 - 4]
mov eax, dword [edi + 0x18]
test eax, eax
je 0x407dc2
mov eax, dword [eax + 0xc]
jmp 0x407dc7
mov eax, str.null
push eax
push str.Removing_MMIO_device___s_
call fcn.00410a40
add esp, 8
movsd xmm0, qword [edi + 0x18]
movsd qword [esp + 0x208], xmm0
movsd xmm0, qword [edi + 0x20]
movsd qword [esp + 0x210], xmm0
movsd xmm0, qword [edi + 0x10]
movsd qword [esp + 0x200], xmm0
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
movq qword [esp + 0x1f8], xmm1
movq qword [esp + 0x1f0], xmm0
mov eax, dword [esp + 0x208]
test eax, eax
je 0x407d8a
mov eax, dword [eax]
test eax, eax
je 0x407d8a
push ebx
call eax
jmp 0x407d96
push dword [eax + 0x18]
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov dword [eax + 0x18], 0
mov eax, dword [esp + 4]
mov dword [eax + 0x1c], 0
mov eax, dword [esp + 4]
mov dword [eax + 0x20], 0
mov eax, dword [esp + 4]
push dword [eax + 0x24]
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov dword [eax + 0x24], 0
mov eax, dword [esp + 4]
mov dword [eax + 0x28], 0
mov eax, dword [esp + 4]
mov dword [eax + 0x2c], 0
mov eax, dword [esp + 4]
mov edx, dword [eax + 8]
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x10]
call fcn.00411940
mov eax, dword [esp + 4]
pxor xmm0, xmm0
movq qword [eax + 8], xmm0
movq qword [eax], xmm0
mov dword [eax + 0x10], 0
mov esi, dword [eax + 0x4c]
test esi, esi
mov ebx, dword [esp + 0x10]
je 0x407f17
push dword [esi + 0x18]
call sub.MSVCR70.dll_fflush
add esp, 4
mov ecx, 1
xor eax, eax
lock cmpxchg dword [esi + 0x1c], ecx
jne 0x408071
mov dword [esi + 0x20], str.blk_io.c_267
push dword [esi + 0x18]
call sub.MSVCR70.dll_fclose
add esp, 4
xor edx, edx
xchg dword [esi + 0x1c], edx
cmp edx, 1
jne 0x408080
push esi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov esi, dword [eax + 0x50]
test esi, esi
je 0x407f68
push dword [esi + 0x18]
call sub.MSVCR70.dll_fflush
add esp, 4
mov ecx, 1
xor eax, eax
lock cmpxchg dword [esi + 0x1c], ecx
jne 0x40808d
mov dword [esi + 0x20], str.blk_io.c_267
push dword [esi + 0x18]
call sub.MSVCR70.dll_fclose
add esp, 4
xor edx, edx
xchg dword [esi + 0x1c], edx
cmp edx, 1
jne 0x40809c
push esi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov esi, dword [eax + 0x54]
test esi, esi
je 0x407fb9
push dword [esi + 0x18]
call sub.MSVCR70.dll_fflush
add esp, 4
mov ecx, 1
xor eax, eax
lock cmpxchg dword [esi + 0x1c], ecx
jne 0x4080a9
mov dword [esi + 0x20], str.blk_io.c_267
push dword [esi + 0x18]
call sub.MSVCR70.dll_fclose
add esp, 4
xor edx, edx
xchg dword [esi + 0x1c], edx
cmp edx, 1
jne 0x4080b8
push esi
call sub.MSVCR70.dll_free
add esp, 4
mov eax, dword [esp + 4]
mov esi, eax
mov ecx, dword [eax + 0xb0]
call fcn.00402780
push dword [esi + 0xb8]
call sub.MSVCR70.dll_free
add esp, 4
push esi
call sub.MSVCR70.dll_free
jmp 0x4038b0
test dl, 1
je 0x407052
jmp 0x40707c
mov dword [esp + 0x14], 0
test dl, 1
je 0x4070e9
jmp 0x407100
push eax
jmp 0x407b8f
mov eax, esi
or eax, 0x20
test bl, 1
cmove esi, eax
jmp 0x403b1a
test dl, 1
je 0x406fcf
jmp 0x406fe5
push str.Suspicious_0_byte_allocation
mov esi, eax
call fcn.00410c10
mov eax, esi
add esp, 4
jmp 0x405119
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
test esi, esi
jne 0x4054bf
jmp 0x408293
lea ecx, [esi + 0x1c]
xor edx, edx
call fcn.0040f5ee
jmp 0x407ef1
lea ecx, [esi + 0x1c]
call fcn.0040f821
jmp 0x407f0a
lea ecx, [esi + 0x1c]
xor edx, edx
call fcn.0040f5ee
jmp 0x407f42
lea ecx, [esi + 0x1c]
call fcn.0040f821
jmp 0x407f5b
lea ecx, [esi + 0x1c]
xor edx, edx
call fcn.0040f5ee
jmp 0x407f93
lea ecx, [esi + 0x1c]
call fcn.0040f821
jmp 0x407fac
push str.Suspicious_0_byte_allocation
mov esi, eax
call fcn.00410c10
mov eax, esi
add esp, 4
test eax, eax
jne 0x404d0b
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov esi, eax
call fcn.00410c10
mov eax, esi
add esp, 4
test eax, eax
jne 0x404d5c
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x404370
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x40446c
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x4045d7
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x404e4c
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x40530d
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x40610e
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x4066d4
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x4069f3
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x406c8a
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x406deb
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x406f46
jmp 0x408293
push str.Suspicious_0_byte_allocation
call fcn.00410c10
add esp, 4
cmp dword [esp + 0xc], 0
jne 0x405656
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x406486
jmp 0x408293
push str.Suspicious_0_byte_allocation
mov ebx, eax
call fcn.00410c10
mov eax, ebx
add esp, 4
test eax, eax
jne 0x4058c7
push str.Out_of_memory_
call fcn.00410c90