Function at 0x415470
Capabilities:
Create thread

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47aa1a
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x480
mov eax, dword [0x49e074]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
mov dword [ebp - 0x3b4], edi
mov dword [ebp - 0x3c8], 0
cmp esi, 1
jne 0x4154eb
mov edx, str.Usage:_odin4__h
mov ecx, 0x4a20c8
call fcn.00413360
push eax
call fcn.004173f0
add esp, 4
mov eax, esi
jmp 0x41717d
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 0xf
mov byte [ebp - 0x238], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x3c4], 0
mov dword [ebp - 0x3c0], 0
mov dword [ebp - 0x3bc], 0
xorps xmm0, xmm0
mov dword [ebp - method.FirmwareData.virtual_0], vtable.FirmwareData.0
mov dword [ebp - 0x1c0], 0
mov dword [ebp - 0x1bc], 0xf
mov byte [ebp - 0x1d0], 0
mov dword [ebp - 0x1a8], 0
mov dword [ebp - 0x1a4], 0xf
mov byte [ebp - 0x1b8], 0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x18c], 0xf
mov byte [ebp - 0x1a0], 0
mov dword [ebp - 0x178], 0
mov dword [ebp - 0x174], 0xf
mov byte [ebp - 0x188], 0
mov dword [ebp - 0x160], 0
mov dword [ebp - 0x15c], 0xf
mov byte [ebp - 0x170], 0
mov dword [ebp - 0x148], 0
mov dword [ebp - 0x144], 0xf
mov byte [ebp - 0x158], 0
mov dword [ebp - 0x130], 0
mov dword [ebp - 0x12c], 0xf
mov byte [ebp - 0x140], 0
mov dword [ebp - 0x128], 0
mov word [ebp - 0x124], 0
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x110], 0
movlpd qword [ebp - 0x108], xmm0
movlpd qword [ebp - 0x100], xmm0
movlpd qword [ebp - 0xf8], xmm0
movlpd qword [ebp - 0xf0], xmm0
movlpd qword [ebp - 0xe8], xmm0
movlpd qword [ebp - 0xe0], xmm0
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0xc4], 0xf
mov byte [ebp - 0xd8], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xac], 0xf
mov byte [ebp - 0xc0], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x94], 0xf
mov byte [ebp - 0xa8], 0
movups xmmword [ebp - 0x90], xmm0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x7c], 0
xor al, al
mov byte [ebp - 4], 2
push 0
mov byte [ebp - 0x3aa], 0
mov byte [ebp - 0x3b5], al
call fcn.0045d918
add esp, 4
push eax
call fcn.0045ea15
add esp, 4
push eax
call fcn.0045e9bf
add esp, 4
test eax, eax
mov eax, 1
setne byte [0x49ea70]
mov dword [ebp - 0x3b0], eax
cmp esi, eax
jle 0x416b3c
nop word [eax + eax]
mov edx, dword [edi + eax*4]
mov ecx, edx
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
lea esi, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415730
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x44]
call fcn.00403590
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x44]
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
mov edi, dword [ebp - 0x44]
mov esi, dword [ebp - 0x34]
cmovae ecx, edi
cmp esi, 2
jne 0x41577e
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415771
movzx eax, byte [ecx + 1]
cmp al, 0x68
jne 0x415771
xor eax, eax
jmp 0x415776
sbb eax, eax
or eax, 1
test eax, eax
je 0x4165d4
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 2
jne 0x4157ac
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x41579f
movzx eax, byte [ecx + 1]
cmp al, 0x76
jne 0x41579f
xor eax, eax
jmp 0x4157a4
sbb eax, eax
or eax, 1
test eax, eax
je 0x4165ed
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 2
jne 0x41584b
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x4157d1
movzx eax, byte [ecx + 1]
cmp al, 0x70
jne 0x4157d1
xor eax, eax
jmp 0x4157d6
sbb eax, eax
or eax, 1
mov esi, dword [ebp - 0x3b0]
test eax, eax
jne 0x415851
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415851
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415807
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x5c]
call fcn.00403590
lea eax, [ebp - 0x5c]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040a6b0
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x48]
mov byte [ebp - 0x3a9], al
cmp edx, 0x10
jb 0x415eb1
mov ecx, dword [ebp - 0x5c]
jmp 0x415e82
mov esi, dword [ebp - 0x3b0]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x44]
cmp edx, 0x10
cmovae ecx, edi
cmp eax, 2
jne 0x41599b
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415879
movzx eax, byte [ecx + 1]
cmp al, 0x62
jne 0x415879
xor eax, eax
jmp 0x41587e
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415998
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415998
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4158b1
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 5
cmp dword [ebp - 0x1c], 0
jne 0x4158d5
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040c750
test al, al
lea eax, [ebp - 0x2c]
jne 0x41598d
push eax
mov edx, str.Fail_parse
lea ecx, [ebp - 0x74]
call fcn.00407e10
mov ecx, eax
add esp, 4
cmp byte [0x4a3190], 0
mov eax, dword [ecx + 0x14]
je 0x415939
cmp eax, 0x10
jb 0x415915
mov ecx, dword [ecx]
cmp dword [0x49eaa4], 0x10
mov eax, 0x49ea90
push ecx
cmovae eax, dword [0x49ea90]
push eax
push 0x48d878
call fcn.00414fa0
add esp, 0xc
jmp 0x41594e
cmp eax, 0x10
jb 0x415940
mov ecx, dword [ecx]
push ecx
push 0x48d880
call fcn.00414fa0
add esp, 8
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x415e50
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x41597c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor al, al
jmp 0x415e6d
lea ecx, [ebp - 0x1d0]
jmp 0x415e5a
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415ae2
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x4159c0
movzx eax, byte [ecx + 1]
cmp al, 0x61
jne 0x4159c0
xor eax, eax
jmp 0x4159c5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415adf
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415adf
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4159f8
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 6
cmp dword [ebp - 0x1c], 0
jne 0x415a1c
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040c750
test al, al
lea eax, [ebp - 0x2c]
jne 0x415ad4
push eax
mov edx, str.Fail_parse
lea ecx, [ebp - 0x74]
call fcn.00407e10
mov ecx, eax
add esp, 4
cmp byte [0x4a3190], 0
mov eax, dword [ecx + 0x14]
je 0x415a80
cmp eax, 0x10
jb 0x415a5c
mov ecx, dword [ecx]
cmp dword [0x49eaa4], 0x10
mov eax, 0x49ea90
push ecx
cmovae eax, dword [0x49ea90]
push eax
push 0x48d878
call fcn.00414fa0
add esp, 0xc
jmp 0x415a95
cmp eax, 0x10
jb 0x415a87
mov ecx, dword [ecx]
push ecx
push 0x48d880
call fcn.00414fa0
add esp, 8
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x415e50
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415ac3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor al, al
jmp 0x415e6d
lea ecx, [ebp - 0x1b8]
jmp 0x415e5a
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415c2a
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415b07
movzx eax, byte [ecx + 1]
cmp al, 0x63
jne 0x415b07
xor eax, eax
jmp 0x415b0c
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415c27
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415c27
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415b40
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 7
cmp dword [ebp - 0x1c], 0
jne 0x415b64
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040c750
test al, al
lea eax, [ebp - 0x2c]
jne 0x415c1c
push eax
mov edx, str.Fail_parse
lea ecx, [ebp - 0x74]
call fcn.00407e10
mov ecx, eax
add esp, 4
cmp byte [0x4a3190], 0
mov eax, dword [ecx + 0x14]
je 0x415bc8
cmp eax, 0x10
jb 0x415ba4
mov ecx, dword [ecx]
cmp dword [0x49eaa4], 0x10
mov eax, 0x49ea90
push ecx
cmovae eax, dword [0x49ea90]
push eax
push 0x48d878
call fcn.00414fa0
add esp, 0xc
jmp 0x415bdd
cmp eax, 0x10
jb 0x415bcf
mov ecx, dword [ecx]
push ecx
push 0x48d880
call fcn.00414fa0
add esp, 8
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x415e50
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415c0b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor al, al
jmp 0x415e6d
lea ecx, [ebp - 0x1a0]
jmp 0x415e5a
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415d77
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415c4f
movzx eax, byte [ecx + 1]
cmp al, 0x73
jne 0x415c4f
xor eax, eax
jmp 0x415c54
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415d74
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415d74
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415c87
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 8
cmp dword [ebp - 0x1c], 0
jne 0x415cab
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040c750
test al, al
jne 0x415d66
lea eax, [ebp - 0x188]
mov edx, str.Fail_parse
push eax
lea ecx, [ebp - 0x74]
call fcn.00407e10
mov ecx, eax
add esp, 4
cmp byte [0x4a3190], 0
mov eax, dword [ecx + 0x14]
je 0x415d12
cmp eax, 0x10
jb 0x415cee
mov ecx, dword [ecx]
cmp dword [0x49eaa4], 0x10
mov eax, 0x49ea90
push ecx
cmovae eax, dword [0x49ea90]
push eax
push 0x48d878
call fcn.00414fa0
add esp, 0xc
jmp 0x415d27
cmp eax, 0x10
jb 0x415d19
mov ecx, dword [ecx]
push ecx
push 0x48d880
call fcn.00414fa0
add esp, 8
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x415e50
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415d55
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x188]
jmp 0x415e5a
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415ec4
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415d9c
movzx eax, byte [ecx + 1]
cmp al, 0x75
jne 0x415d9c
xor eax, eax
jmp 0x415da1
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415ec1
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415ec1
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415dd4
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 9
cmp dword [ebp - 0x1c], 0
jne 0x415df5
xor al, al
jmp 0x415e6d
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1d8]
call fcn.0040c750
test al, al
lea eax, [ebp - 0x2c]
jne 0x415e54
push eax
mov edx, str.Fail_parse
lea ecx, [ebp - 0x74]
call fcn.00407e10
mov edx, dword [ebp - 0x60]
add esp, 4
cmp edx, 0x10
jb 0x415e50
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415e46
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor al, al
jmp 0x415e6d
lea ecx, [ebp - 0x170]
cmp dword [ebp - 0x18], 0x10
push dword [ebp - 0x1c]
cmovae eax, dword [ebp - 0x2c]
push eax
call fcn.00403590
mov al, 1
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x18]
mov byte [ebp - 0x3a9], al
cmp edx, 0x10
jb 0x415eb1
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415ea1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
mov al, byte [ebp - 0x3a9]
add esp, 8
test al, al
je 0x416afa
mov edi, dword [ebp - 0x44]
jmp 0x41657c
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415efd
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415ee5
movzx eax, byte [ecx + 1]
cmp al, 0x65
jne 0x415ee5
xor eax, eax
jmp 0x415eea
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415efa
mov byte [ebp - 0x128], 1
jmp 0x41657f
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x415fd8
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415f22
movzx eax, byte [ecx + 1]
cmp al, 0x56
jne 0x415f22
xor eax, eax
jmp 0x415f27
sbb eax, eax
or eax, 1
test eax, eax
jne 0x415fd5
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x415fd5
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415f60
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x2c]
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x140]
push dword [ebp - 0x1c]
cmovae eax, dword [ebp - 0x2c]
push eax
call fcn.00403590
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x18]
cmp edx, 0x10
jb 0x415eb9
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x415fc3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
mov edi, dword [ebp - 0x44]
add esp, 8
jmp 0x41657c
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x416015
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x415ff9
movzx eax, byte [ecx + 1]
cmp al, 0x69
jne 0x415ff9
xor eax, eax
jmp 0x415ffe
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416012
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jg 0x416618
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x416046
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x416036
movzx eax, byte [ecx + 1]
cmp al, 0x77
jne 0x416036
xor eax, eax
jmp 0x41603b
sbb eax, eax
or eax, 1
test eax, eax
je 0x416707
mov eax, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp eax, 2
jne 0x416146
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x41606b
movzx eax, byte [ecx + 1]
cmp al, 0x64
jne 0x41606b
xor eax, eax
jmp 0x416070
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416146
inc esi
mov dword [ebp - 0x3b0], esi
cmp dword [ebx + 8], esi
jle 0x416146
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4160a3
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.00403590
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x3c0]
cmp eax, dword [ebp - 0x3bc]
je 0x4160f2
movups xmm0, xmmword [ebp - 0x2c]
mov dword [eax + 0x10], 0
mov edx, 0xf
mov byte [ebp - 0x2c], 0
movups xmmword [eax], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [eax + 0x10], xmm0
add dword [ebp - 0x3c0], 0x18
jmp 0x416105
lea ecx, [ebp - 0x2c]
push ecx
push eax
lea ecx, [ebp - 0x3c4]
call fcn.004176a0
mov edx, dword [ebp - 0x18]
mov byte [ebp - 4], 3
cmp edx, 0x10
jb 0x415eb9
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416134
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
mov edi, dword [ebp - 0x44]
add esp, 8
jmp 0x41657c
mov esi, dword [ebp - 0x34]
lea ecx, [ebp - 0x44]
cmp edx, 0x10
cmovae ecx, edi
cmp esi, 2
jne 0x416177
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x41616a
movzx eax, byte [ecx + 1]
cmp al, 0x6c
jne 0x41616a
xor eax, eax
jmp 0x41616f
sbb eax, eax
or eax, 1
test eax, eax
je 0x416730
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 9
jne 0x4161e3
mov edx, str.__verbose
mov esi, 5
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4161a1
add ecx, 4
add edx, 4
sub esi, 4
jae 0x416190
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4161c8
cmp esi, 0xfffffffd
je 0x4161c4
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4161c8
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4161c8
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x4161c8
xor eax, eax
jmp 0x4161cd
sbb eax, eax
or eax, 1
mov edx, dword [ebp - 0x30]
test eax, eax
jne 0x4161e0
mov byte [ebp - 0x125], 1
jmp 0x41657f
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 6
jne 0x416246
mov eax, dword [ecx]
mov edx, str.__list
mov esi, 2
cmp eax, dword [edx]
jne 0x41620c
add ecx, 4
mov esi, 0xfffffffe
add edx, 4
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x416233
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416233
cmp esi, 0xfffffffe
je 0x41622f
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416233
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416233
xor eax, eax
jmp 0x416238
sbb eax, eax
or eax, 1
test eax, eax
je 0x416740
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 8
jne 0x4162c4
mov edx, str.__reboot
mov esi, 4
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x416275
add ecx, 4
add edx, 4
sub esi, 4
jae 0x416260
xor eax, eax
jmp 0x41629a
cmp al, byte [edx]
jne 0x416295
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416295
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416295
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416295
xor eax, eax
jmp 0x41629a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4162be
mov edx, str.Reboot_into_normal_mode
mov ecx, 0x4a20c8
call fcn.00413360
push eax
call fcn.004173f0
mov edi, dword [ebp - 0x44]
add esp, 4
jmp 0x41657c
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 0xc
jne 0x41634b
mov edx, str.__redownload
mov esi, 8
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4162f5
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4162e0
xor eax, eax
jmp 0x41631a
cmp al, byte [edx]
jne 0x416315
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416315
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416315
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416315
xor eax, eax
jmp 0x41631a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416345
mov edx, str.Reboot_into_download_mode_if_it_possible__not_working_in_normal_case_
mov ecx, 0x4a20c8
call fcn.00413360
push eax
call fcn.004173f0
mov edi, dword [ebp - 0x44]
add esp, 4
mov byte [ebp - 0x3aa], 1
jmp 0x41657c
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 0xc
jne 0x4163b3
mov edx, str.__ignore_md5
mov esi, 8
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x416378
add ecx, 4
add edx, 4
sub esi, 4
jae 0x416363
xor eax, eax
jmp 0x41639d
cmp al, byte [edx]
jne 0x416398
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416398
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416398
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416398
xor eax, eax
jmp 0x41639d
sbb eax, eax
or eax, 1
mov edx, dword [ebp - 0x30]
test eax, eax
jne 0x4163b0
mov byte [ebp - 0x124], 1
jmp 0x41657f
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 0xd
jne 0x416423
mov edx, str.__md5sum_only
mov esi, 9
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4163e1
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4163d0
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x416408
cmp esi, 0xfffffffd
je 0x416404
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416408
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416408
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416408
xor eax, eax
jmp 0x41640d
sbb eax, eax
or eax, 1
mov edx, dword [ebp - 0x30]
test eax, eax
jne 0x416420
mov byte [ebp - 0x3b5], 1
jmp 0x41657f
mov esi, dword [ebp - 0x34]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 0xc
jne 0x41649a
mov edx, str.__read_cpuid
mov esi, 8
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x416455
add ecx, 4
add edx, 4
sub esi, 4
jae 0x416440
xor eax, eax
jmp 0x41647a
cmp al, byte [edx]
jne 0x416475
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416475
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416475
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416475
xor eax, eax
jmp 0x41647a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416494
mov edx, dword [ebp - 0x3b0]
inc edx
mov dword [ebp - 0x3b0], edx
cmp dword [ebx + 8], edx
jg 0x416777
mov esi, dword [ebp - 0x34]
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp esi, 9
jne 0x41650c
mov edx, str.__read_un
mov esi, 5
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4164c3
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4164b2
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4164ea
cmp esi, 0xfffffffd
je 0x4164e6
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4164ea
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4164ea
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x4164ea
xor eax, eax
jmp 0x4164ef
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416509
mov eax, dword [ebp - 0x3b0]
inc eax
mov dword [ebp - 0x3b0], eax
cmp dword [ebx + 8], eax
jg 0x4169eb
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
lea ecx, [ebp - 0x44]
cmovae ecx, edi
cmp dword [ebp - 0x34], 0xa
jne 0x416aca
mov edx, str.__noreboot
mov esi, 6
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x416541
add ecx, 4
add edx, 4
sub esi, 4
jae 0x416530
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x416568
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x416568
cmp esi, 0xfffffffe
je 0x416564
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x416568
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x416568
xor eax, eax
jmp 0x41656d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x416aca
mov byte [ebp - 0x123], 1
mov edx, dword [ebp - 0x30]
mov byte [ebp - 4], 2
cmp edx, 0x10
jb 0x4165b3
lea ecx, [edx + 1]
mov eax, edi
cmp ecx, 0x1000
jb 0x4165a9
mov edi, dword [edi - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push ecx
push edi
call fcn.0045020d
add esp, 8
mov eax, dword [ebp - 0x3b0]
inc eax
mov dword [ebp - 0x3b0], eax
cmp eax, dword [ebx + 8]
jge 0x416aba
mov edi, dword [ebp - 0x3b4]
jmp 0x415710
push str.1.2.13
push str.Usage_:_odin4__args...__nOdin4_downloader._odin4_version__s_n__v________SHOW_VERSION_n__w________Show_License_n__b________Add_Bootloader_file_n__a________Add_AP_image_file_n__c________Add_CP_image_file_n__s________Add_CSC_file_n__u________Add_UMS_file_n__e________Set_Nand_erase_option_n__V________Home_binary_validation_check_with_pit_file_n___reboot__Reboot_into_normal_mode_n___noreboot__Dont_reboot_after_flashing_binaries_n___redownload__Reboot_into_download_mode_if_it_possible__not_working_in_normal_case__n___ignore_md5__Ignore_MD5SUM._odin_dont_verify_the_integrity_of_files_n___md5sum_only_Verify_the_integrity_of_files_xxx.tar.MD5_._odin_dont_flash_binary_n__d________Set_a_device_path__detect_automatically_without_this_option__n__l________Show_downloadable_devices_path_n___list____Show_downloadable_devices_path_and_usb_location__linux_win__n___verbose_____Verbose.__Single_download_only__n_nIMPORTANT_:_You_must_set_up_your_system_to_detect_your_device_on_LINUX_host._n_create_this_file:__etc_udev_rules.d_51_android.rules_n_to_add_a_line_to_the_file:_n_SUBSYSTEM_usb___ATTRidVendor_04e8___MODE_0666___GROUP_plugdev__n____http:__developer.android.com_tools_device.html__n_And_you_maybe_need_to_unload_a_module_cdc_acm_before_downloading.__This_is_only_needed_for_older_kernels.__n____sudo_rmmod_cdc_acm_n_OR_n___echo__blacklist_cdc_acm_____etc_modprobe.d_cdc_acm_blacklist.conf_n_nExample_:_n_odin4__b_BL_XXXX.tar.md5__a_AP_XXXX.tar.md5__c_CP_XXXX.tar.md5__s_CSC_XXXX.tar.md5_nExample__Select_One_Device_:_n_odin4__l_nPATH_OF_DEVICE_A_nPATH_OF_DEVICE_B_n_odin4__b_BL_XXXX.tar.md5__a_AP_XXXX.tar.md5__c_CP_XXXX.tar.md5__s_CSC_XXXX.tar.md5__d_PATH_OF_DEVICE_A_n_nOdin_Community_:_http:__mobilerndhub.sec.samsung.net_hub_site_odin__n
call fcn.00414fa0
add esp, 8
xor esi, esi
jmp 0x416aff
mov edx, str.odin4_version
mov ecx, 0x4a20c8
call fcn.00413360
mov edx, str.1.2.13
mov ecx, eax
call fcn.00413360
push eax
call fcn.004173f0
add esp, 4
xor esi, esi
jmp 0x416aff
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
mov edx, dword [ecx + esi*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x416638
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x5c]
call fcn.00403590
lea edx, [ebp - 0x5c]
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x2c]
call fcn.00401e10
mov byte [ebp - 4], 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
jb 0x416669
mov eax, dword [eax]
push ecx
mov edx, eax
mov ecx, 0x4a20c8
call fcn.00414530
add esp, 4
push eax
call fcn.004173f0
mov edx, dword [ebp - 0x18]
add esp, 4
cmp edx, 0x10
jb 0x4166b6
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4166ac
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
cmp edx, 0x10
jb 0x416770
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4166f6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41719b
push edx
push ecx
call fcn.0045020d
add esp, 8
xor esi, esi
jmp 0x416aff
xor esi, esi
nop dword [eax]
movzx eax, byte [esi + str.Copyright__C__2016_2018_Samsung_Electronics.Co__Ltd._All_rights_reserved._n_n_nOpen_source_licenses_n_n_n_Crypto_n__________n___nThe_Crypto_Library__as_a_compilation__is_currently_licensed_under_the_Boost_nSoftware_License_1.0__http:__www.boost.org_users_license.html_._n_nBoost_Software_License___Version_1.0___August_17th__2003_n_nPermission_is_hereby_granted__free_of_charge__to_any_person_or_organization_nobtaining_a_copy_of_the_software_and_accompanying_documentation_covered_by_nthis_license__the__Software___to_use__reproduce__display__distribute__nexecute__and_transmit_the_Software__and_to_prepare_derivative_works_of_the_nSoftware__and_to_permit_third_parties_to_whom_the_Software_is_furnished_to_ndo_so__all_subject_to_the_following:_n_nThe_copyright_notices_in_the_Software_and_this_entire_statement__including_nthe_above_license_grant__this_restriction_and_the_following_disclaimer__nmust_be_included_in_all_copies_of_the_Software__in_whole_or_in_part__and_nall_derivative_works_of_the_Software__unless_such_copies_or_derivative_nworks_are_solely_in_the_form_of_machine_executable_object_code_generated_by_na_source_language_processor._n_nTHE_SOFTWARE_IS_PROVIDED__AS_IS___WITHOUT_WARRANTY_OF_ANY_KIND__EXPRESS_OR_nIMPLIED__INCLUDING_BUT_NOT_LIMITED_TO_THE_WARRANTIES_OF_MERCHANTABILITY__nFITNESS_FOR_A_PARTICULAR_PURPOSE__TITLE_AND_NON_INFRINGEMENT._IN_NO_EVENT_nSHALL_THE_COPYRIGHT_HOLDERS_OR_ANYONE_DISTRIBUTING_THE_SOFTWARE_BE_LIABLE_nFOR_ANY_DAMAGES_OR_OTHER_LIABILITY__WHETHER_IN_CONTRACT__TORT_OR_OTHERWISE__nARISING_FROM__OUT_OF_OR_IN_CONNECTION_WITH_THE_SOFTWARE_OR_THE_USE_OR_OTHER_nDEALINGS_IN_THE_SOFTWARE._n_n_LZ4_n_____n_nLZ4_Library_nCopyright__c__2011_2016__Yann_Collet_nAll_rights_reserved._n_nRedistribution_and_use_in_source_and_binary_forms__with_or_without_modification__nare_permitted_provided_that_the_following_conditions_are_met:_n_n_Redistributions_of_source_code_must_retain_the_above_copyright_notice__this_n__list_of_conditions_and_the_following_disclaimer._n_n_Redistributions_in_binary_form_must_reproduce_the_above_copyright_notice__this_n__list_of_conditions_and_the_following_disclaimer_in_the_documentation_and_or_n__other_materials_provided_with_the_distribution._n_nTHIS_SOFTWARE_IS_PROVIDED_BY_THE_COPYRIGHT_HOLDERS_AND_CONTRIBUTORS__AS_IS__AND_nANY_EXPRESS_OR_IMPLIED_WARRANTIES__INCLUDING__BUT_NOT_LIMITED_TO__THE_IMPLIED_nWARRANTIES_OF_MERCHANTABILITY_AND_FITNESS_FOR_A_PARTICULAR_PURPOSE_ARE_nDISCLAIMED._IN_NO_EVENT_SHALL_THE_COPYRIGHT_HOLDER_OR_CONTRIBUTORS_BE_LIABLE_FOR_nANY_DIRECT__INDIRECT__INCIDENTAL__SPECIAL__EXEMPLARY__OR_CONSEQUENTIAL_DAMAGES_n_INCLUDING__BUT_NOT_LIMITED_TO__PROCUREMENT_OF_SUBSTITUTE_GOODS_OR_SERVICES__nLOSS_OF_USE__DATA__OR_PROFITS__OR_BUSINESS_INTERRUPTION__HOWEVER_CAUSED_AND_ON_nANY_THEORY_OF_LIABILITY__WHETHER_IN_CONTRACT__STRICT_LIABILITY__OR_TORT_n_INCLUDING_NEGLIGENCE_OR_OTHERWISE__ARISING_IN_ANY_WAY_OUT_OF_THE_USE_OF_THIS_nSOFTWARE__EVEN_IF_ADVISED_OF_THE_POSSIBILITY_OF_SUCH_DAMAGE._n]
push eax
call fcn.0045b00f
inc esi
add esp, 4
cmp esi, 0xb96
jb 0x416710
xor esi, esi
jmp 0x416aff
xor dl, dl
lea ecx, [ebp - 0x20]
call fcn.00421890
mov byte [ebp - 4], 0xe
jmp 0x41674e
mov dl, 1
lea ecx, [ebp - 0x20]
call fcn.00421890
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x3c4]
cmp ecx, eax
je 0x416768
push dword [ebp - 0x3cc]
push dword [eax + 4]
push dword [eax]
call fcn.00417a00
lea ecx, [ebp - 0x20]
call fcn.00411b40
xor esi, esi
jmp 0x416aff
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
mov edx, dword [ecx + edx*4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x416797
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x5c]
call fcn.00403590
lea eax, [ebp - 0x1d8]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0x5c]
push eax
lea ecx, [ebp - 0x220]
call fcn.004047c0
mov byte [ebp - 4], 0x12
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x4167fc
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4167f2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a0
push edx
push ecx
call fcn.0045020d
add esp, 8
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x4c], 0
push eax
lea ecx, [ebp - 0x220]
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
call fcn.00405350
mov byte [ebp - 4], 0x13
mov esi, dword [ebp - 0x1c]
test esi, esi
jne 0x41682f
mov esi, 1
jmp 0x41688f
mov edi, dword [ebp - 0x18]
lea eax, [ebp - 0x2c]
cmp edi, 0x10
cmovae eax, dword [ebp - 0x2c]
test esi, esi
je 0x41685a
lea ecx, [esi + eax]
mov edx, eax
cmp eax, ecx
jae 0x41685a
nop dword [eax]
cmp byte [edx], 0x30
jne 0x4168c6
inc edx
cmp edx, ecx
jb 0x416850
push 3
push 0x48e080
lea ecx, [ebp - 0x2c]
call fcn.00403590
cmp dword [ebp - 0x18], 0x10
lea edx, [ebp - 0x2c]
push dword [ebp - 0x1c]
cmovae edx, dword [ebp - 0x2c]
mov ecx, 0x4a20c8
call fcn.00414530
add esp, 4
push eax
call fcn.004173f0
add esp, 4
xor esi, esi
mov edx, dword [ebp - 0x18]
cmp edx, 0x10
jb 0x4169c9
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4169bf
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
jmp 0x4169bf
sub edx, eax
cmp edx, 0xffffffff
je 0x41685a
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
cmp esi, edx
jb 0x4171aa
sub esi, edx
lea eax, [ebp - 0x2c]
or ecx, 0xffffffff
cmp esi, 0xffffffff
cmovb ecx, esi
cmp edi, 0x10
push ecx
cmovae eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x5c]
add eax, edx
push eax
call fcn.00403590
push 2
push 0x48e084
push ecx
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x14
call fcn.004141c0
lea ecx, [ebp - 0x2c]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00402860
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x41697e
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416974
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171af
push edx
push ecx
call fcn.0045020d
add esp, 8
mov byte [ebp - 4], 0x13
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x416869
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4169b0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171af
push edx
push ecx
call fcn.0045020d
add esp, 8
jmp 0x416869
push edx
push ecx
call fcn.0045020d
add esp, 8
lea ecx, [ebp - 0x220]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
call fcn.00404930
jmp 0x416aff
mov ecx, dword [ebp - 0x3b4]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
mov edx, dword [ecx + eax*4]
mov ecx, edx
lea esi, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x416a10
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x5c]
call fcn.00403590
lea eax, [ebp - 0x1d8]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x5c]
push eax
lea ecx, [ebp - 0x220]
call fcn.004047c0
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x416a75
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416a6b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171b4
push edx
push ecx
call fcn.0045020d
add esp, 8
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x4c], 0
push eax
lea ecx, [ebp - 0x220]
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
call fcn.00405790
mov byte [ebp - 4], 0x18
mov eax, dword [ebp - 0x1c]
test eax, eax
jne 0x416aa9
lea esi, [eax + 1]
jmp 0x41688f
cmp dword [ebp - 0x18], 0x10
lea edx, [ebp - 0x2c]
push eax
cmovae edx, dword [ebp - 0x2c]
jmp 0x416877
cmp byte [ebp - 0x3b5], 0
je 0x416b3c
xor esi, esi
jmp 0x417165
mov edx, str.odin4:_illegal_option
mov ecx, 0x4a20c8
call fcn.00413360
cmp dword [ebp - 0x30], 0x10
lea edx, [ebp - 0x44]
push dword [ebp - 0x34]
cmovae edx, dword [ebp - 0x44]
mov ecx, eax
call fcn.00414530
add esp, 4
push eax
call fcn.004173f0
add esp, 4
mov esi, 1
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
jb 0x417165
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416b2d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
jmp 0x417165
mov eax, dword [ebp - 0x3c4]
cmp eax, dword [ebp - 0x3c0]
jne 0x416c6c
mov dl, 1
lea ecx, [ebp - 0x20]
call fcn.00421890
lea ecx, [ebp - 0x3c4]
mov byte [ebp - 4], 0x19
cmp ecx, eax
je 0x416b76
push dword [ebp - 0x3cc]
push dword [eax + 4]
push dword [eax]
call fcn.00417a00
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 2
call fcn.00411b40
mov eax, dword [ebp - 0x3c4]
cmp eax, dword [ebp - 0x3c0]
jne 0x416c6c
push 0x12
push str.cannot_find_device
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
call fcn.00403590
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x5c]
push 4
push str.MAIN
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
call fcn.00403590
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0x5c]
call fcn.00415060
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x416c1d
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416c13
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
cmp edx, 0x10
jb 0x417160
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416c5d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
jmp 0x417160
mov ecx, dword [ebp - 0x3c0]
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
jne 0x416d5a
push 4
push str.MAIN
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
call fcn.00403590
mov byte [ebp - 4], 0x1c
lea ecx, [ebp - 0x5c]
mov edx, dword [ebp - 0x3c4]
call fcn.00415060
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x416cf9
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x416cef
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
lea eax, [ebp - 0x1d8]
push eax
push dword [ebp - 0x3c4]
lea ecx, [ebp - 0x220]
call fcn.004047c0
cmp byte [ebp - 0x3aa], 0
lea ecx, [ebp - 0x220]
mov byte [ebp - 4], 0x1d
je 0x416d3f
call fcn.00405150
lea ecx, [ebp - 0x220]
mov byte [ebp - 0x3aa], al
call fcn.00404930
jmp 0x417153
call fcn.00405be0
lea ecx, [ebp - 0x220]
mov byte [ebp - 0x3aa], al
call fcn.00404930
jmp 0x417153
mov byte [0x4a3190], 1
lea ecx, [ebp - 0x3b4]
mov byte [ebp - 0x125], 0
xor eax, eax
xchg dword [ecx], eax
xor esi, esi
xor edi, edi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
cmp byte [ebp - 0x3aa], 0
mov ecx, fcn.00405150
mov byte [ebp - 4], 0x1e
mov eax, fcn.00405be0
cmovne eax, ecx
mov ecx, dword [ebp - 0x3c0]
mov dword [ebp - 0x3dc], eax
mov eax, dword [ebp - 0x3c4]
mov dword [ebp - 0x3b0], eax
mov dword [ebp - 0x3cc], ecx
cmp eax, ecx
je 0x416eed
nop dword [eax]
lea ecx, [ebp - 0x3dc]
mov dword [ebp - 0x3a4], eax
lea eax, [ebp - 0x1d8]
mov dword [ebp - 0x3a8], ecx
push eax
lea ecx, [ebp - 0x3a0]
call fcn.00409fc0
lea eax, [ebp - 0x3b4]
mov dword [ebp - 0x240], eax
push 0x170
mov byte [ebp - 4], 0x1f
call fcn.004501dd
mov esi, eax
add esp, 4
mov dword [ebp - 0x3e0], esi
mov byte [ebp - 4], 0x20
lea eax, [ebp - 0x3a0]
mov ecx, dword [ebp - 0x3a8]
mov dword [esi], ecx
mov ecx, dword [ebp - 0x3a4]
mov dword [esi + 4], ecx
lea ecx, [esi + 8]
push eax
call fcn.00409fc0
mov eax, dword [ebp - 0x240]
or dword [ebp - 0x3c8], 4
mov dword [esi + 0x168], eax
mov dword [ebp - 0x3d8], esi
lea eax, [ebp - 0x3d0]
mov byte [ebp - 4], 0x21
push eax
push 0
push esi
push 0x417960
push 0
push 0
call fcn.0045e92e
mov ecx, eax
add esp, 0x18
mov dword [ebp - 0x3d4], ecx
test ecx, ecx
je 0x4171be
mov byte [ebp - 4], 0x22
cmp edi, dword [ebp - 0x18]
je 0x416e9c
mov eax, dword [ebp - 0x3d0]
xorps xmm0, xmm0
movlpd qword [ebp - 0x3d4], xmm0
mov dword [edi], ecx
mov dword [edi + 4], eax
add edi, 8
mov dword [ebp - 0x1c], edi
jmp 0x416eaf
lea eax, [ebp - 0x3d4]
push eax
push edi
lea ecx, [ebp - 0x20]
call fcn.004174a0
mov edi, dword [ebp - 0x1c]
mov byte [ebp - 4], 0x1f
cmp dword [ebp - 0x3d0], 0
jne 0x4171b9
lea ecx, [ebp - 0x3a0]
mov byte [ebp - 4], 0x1e
call fcn.0040a370
mov eax, dword [ebp - 0x3b0]
add eax, 0x18
mov dword [ebp - 0x3b0], eax
cmp eax, dword [ebp - 0x3cc]
jne 0x416dc0
mov esi, dword [ebp - 0x20]
cmp esi, edi
je 0x416f28
cmp dword [esi + 4], 0
je 0x416f21
call sub.KERNEL32.dll_GetCurrentThreadId
cmp dword [esi + 4], eax
je 0x4171d6
push 0
push dword [esi + 4]
push dword [esi]
call fcn.0044f061
add esp, 0xc
test eax, eax
jne 0x4171cf
mov dword [esi], eax
mov dword [esi + 4], eax
add esi, 8
cmp esi, edi
jne 0x416ef1
sub esp, 8
lea ecx, [ebp - 0x490]
call fcn.004104f0
mov byte [ebp - 4], 0x23
mov eax, 0x2aaaaaab
mov ecx, dword [ebp - 0x3c0]
sub ecx, dword [ebp - 0x3c4]
imul ecx
mov eax, dword [ebp - 0x3b4]
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
mov ecx, dword [ebp - 0x3b4]
sub esi, eax
mov edx, str.All_threads_completed.__succeed
push esi
push ecx
push ecx
lea ecx, [ebp - 0x480]
call fcn.00413360
add esp, 4
mov ecx, eax
call fcn.004109a0
push ecx
mov edx, str.___failed
mov ecx, eax
call fcn.00413360
add esp, 4
mov ecx, eax
call fcn.00417260
mov edx, 0x48e0d4
mov ecx, eax
call fcn.00413360
push 4
push str.MAIN
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
call fcn.00403590
mov byte [ebp - 4], 0x25
or dword [ebp - 0x3c8], 0x10
mov ecx, dword [ebp - 0x43c]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
test cl, 2
jne 0x417014
mov eax, dword [ebp - 0x458]
mov edx, dword [eax]
test edx, edx
je 0x417014
mov eax, dword [ebp - 0x468]
cmp edx, dword [ebp - 0x440]
cmovb edx, dword [ebp - 0x440]
mov ecx, dword [eax]
sub edx, ecx
push edx
jmp 0x41703a
test cl, 4
jne 0x417043
mov eax, dword [ebp - 0x45c]
mov edx, dword [eax]
test edx, edx
je 0x417043
mov eax, dword [ebp - 0x46c]
mov ecx, dword [eax]
mov eax, dword [ebp - 0x44c]
mov eax, dword [eax]
sub eax, ecx
add eax, edx
push eax
push ecx
lea ecx, [ebp - 0x44]
call fcn.00403590
lea edx, [ebp - 0x44]
mov dword [ebp - 4], 0x26
lea ecx, [ebp - 0x5c]
call fcn.00415060
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
jb 0x417089
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x41707f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
cmp edx, 0x10
jb 0x4170cf
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4170c5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push edx
push ecx
call fcn.0045020d
add esp, 8
mov esi, dword [ebp - 0x3b4]
mov ecx, dword [ebp - 0x3c0]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp - 0x3c4]
imul ecx
lea ecx, [ebp - 0x490]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
sete byte [ebp - 0x3aa]
call fcn.0040dda0
mov edx, dword [ebp - 0x20]
test edx, edx
je 0x417153
mov ecx, dword [ebp - 0x1c]
mov eax, edx
cmp eax, ecx
je 0x417127
cmp dword [eax + 4], 0
jne 0x4171b9
add eax, 8
cmp eax, ecx
jne 0x417116
mov ecx, dword [ebp - 0x18]
mov eax, edx
sub ecx, edx
and ecx, 0xfffffff8
cmp ecx, 0x1000
jb 0x417149
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4171a5
push ecx
push edx
call fcn.0045020d
add esp, 8
cmp byte [ebp - 0x3aa], 0
jne 0x416ac3
mov esi, 1
lea ecx, [ebp - 0x1d8]
call fcn.0040a370
lea ecx, [ebp - 0x3c4]
call fcn.00411b40
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004501c7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.0045ae71
call fcn.0045ae71
call fcn.0045ae71
call fcn.00403aa0
call fcn.0045ae71
call fcn.0045ae71
call fcn.0045ac5e
push 6
mov dword [ebp - 0x3d0], 0
call fcn.0044f389
push 2
call fcn.0044f389
push 5
call fcn.0044f389
int3