Function at 0x4149de
Capabilities:
Get disk information

Disassembly:
mov eax, 0x466b6d
call fcn.004656a0
sub esp, 0x1b8
push ebx
xor ebx, ebx
lea ecx, [ebp - 0x120]
mov dword [ebp - 0x14], ebx
mov eax, 0x2ee0
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 4], ebx
cmp dword [ebp + 0xc], ebx
push esi
cmovne eax, dword [ebp + 0xc]
mov esi, edx
push edi
mov dword [ebp - 0x10], esp
push 0x47734b
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x110], ebx
mov dword [ebp - 0x10c], 0xf
mov byte [ebp - 0x120], bl
call fcn.004127d6
push 0xf
pop edi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0xc4]
push 0x47734b
mov dword [ebp - 0xb4], ebx
mov dword [ebp - 0xb0], edi
mov byte [ebp - 0xc4], bl
call fcn.004127d6
mov dword [ebp - 0xd8], ebx
mov dword [ebp - 0xd4], ebx
mov dword [ebp - 0xd0], ebx
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], ebx
mov edx, 0x47734b
mov byte [ebp - 4], 4
mov ecx, esi
call fcn.004130b1
test al, al
jne 0x414d31
mov cl, 0x74
mov dword [ebp - 0x3f], 0xd8cfae74
mov word [ebp - 0x3b], 0xb9c0
mov edx, ebx
mov byte [ebp - 0x39], bl
not cl
xor cl, byte [ebp + edx - 0x3e]
mov byte [ebp + edx - 0x3e], cl
inc edx
cmp edx, 5
jae 0x414ac4
mov cl, byte [ebp - 0x3f]
jmp 0x414aaf
push ecx
lea eax, [ebp - 0x3e]
mov byte [ebp - 0x39], bl
push eax
mov ecx, esi
call fcn.00411add
cmp eax, 0xffffffff
je 0x414d6c
mov dword [ebp - 0xe0], ebx
mov dword [ebp - 0xdc], edi
mov byte [ebp - 0xf0], bl
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x74]
push 0x487a34
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x60], ebx
call fcn.004128ab
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 6
push eax
mov edx, esi
lea ecx, [ebp - 0x5c]
call fcn.004359c0
pop ecx
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 8
call fcn.00412665
mov ecx, dword [ebp - 0x5c]
xor esi, esi
inc esi
push esi
push ebx
call fcn.004126f0
mov ecx, dword [ebp - 0x5c]
lea edx, [ecx + 0x10]
mov eax, dword [edx]
dec eax
cmp dword [ecx + 0x14], 0x10
jb 0x414b42
mov ecx, dword [ecx]
mov dword [edx], eax
mov byte [ecx + eax], bl
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x78], 0x18
mov eax, dword [ebp - 0x58]
sub eax, ecx
cdq
idiv dword [ebp - 0x78]
cmp esi, eax
jae 0x414bb6
imul eax, esi, 0x18
add eax, ecx
mov edx, dword [eax + 0x10]
test edx, edx
je 0x414bb3
cmp dword [eax + 0x14], 0x10
jb 0x414b72
mov eax, dword [eax]
push edx
push eax
lea ecx, [ebp - 0xf0]
call fcn.00412852
mov al, 0x16
mov byte [ebp + 0xd], 0x16
mov cl, 0xb5
mov byte [ebp + 0xf], bl
not al
xor cl, al
mov byte [ebp + 0xe], cl
lea ecx, [ebp + 0xe]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x414b97
sub ecx, edx
lea eax, [ebp + 0xe]
push ecx
push eax
lea ecx, [ebp - 0xf0]
call fcn.00412852
mov ecx, dword [ebp - 0x5c]
inc esi
jmp 0x414b51
lea ecx, [ebp - 0xac]
call fcn.004329ee
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], edi
mov byte [ebp - 0x30], bl
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0xa8]
mov edi, dword [ebp - 0xac]
mov dword [ebp - 0x78], eax
cmp edi, eax
je 0x414d0b
push edi
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x60], ebx
call fcn.004128ab
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 0xb
push eax
lea ecx, [ebp - 0x30]
call fcn.00411cc1
cmp dword [ebp - 0x60], 0x10
lea eax, [ebp - 0x74]
mov esi, ebx
cmovae eax, dword [ebp - 0x74]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov dword [ebp - 0x44], eax
cmp eax, 2
jne 0x414c4e
mov cl, 0xa
mov byte [ebp + 0xd], 0xa
not cl
mov byte [ebp + 0xf], bl
mov dl, 0xc7
lea eax, [ebp + 0xe]
push ecx
xor dl, cl
mov ecx, dword [ebp - 0x5c]
push eax
mov byte [ebp + 0xe], dl
call fcn.00411add
cmp eax, 0xffffffff
je 0x414cf4
mov eax, dword [ebp - 0x44]
xor esi, esi
inc esi
cmp eax, 3
jne 0x414c7c
mov cl, 0x4a
mov byte [ebp - 0x15], bl
mov byte [ebp - 0x17], cl
mov al, 0x86
not cl
xor al, cl
mov byte [ebp - 0x16], al
lea eax, [ebp - 0x16]
push ecx
mov ecx, dword [ebp - 0x5c]
push eax
call fcn.00411add
cmp eax, 0xffffffff
je 0x414cab
mov eax, dword [ebp - 0x44]
xor esi, esi
inc esi
cmp eax, 5
jne 0x414cab
mov al, 0x74
mov byte [ebp - 0x13], 0x74
not al
mov byte [ebp - 0x11], bl
mov dl, 0xbe
xor dl, al
lea eax, [ebp - 0x12]
push ecx
mov ecx, dword [ebp - 0x5c]
push eax
mov byte [ebp - 0x12], dl
call fcn.00411add
cmp eax, 0xffffffff
push 1
pop eax
cmovne esi, eax
jmp 0x414cae
xor eax, eax
inc eax
cmp esi, eax
jne 0x414cf4
cmp dword [ebp - 0xdc], 0x10
lea eax, [ebp - 0xf0]
push dword [ebp - 0xe0]
cmovae eax, dword [ebp - 0xf0]
lea ecx, [ebp - 0x30]
push eax
call fcn.00412852
push dword [ebp + 0x18]
lea edx, [ebp - 0x30]
mov ecx, 0x489050
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp - 0x48]
push dword [ebp + 8]
call fcn.004149de
add esp, 0x14
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0xa
call fcn.00412665
mov eax, dword [ebp - 0x78]
add edi, 0x18
jmp 0x414bdd
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0xac]
call fcn.004123d3
lea ecx, [ebp - 0x5c]
call fcn.004123d3
lea ecx, [ebp - 0xf0]
call fcn.00412665
lea ecx, [ebp - 0x84]
call fcn.004123d3
lea ecx, [ebp - 0xd8]
call fcn.004123d3
lea ecx, [ebp - 0xc4]
call fcn.00412665
lea ecx, [ebp - 0x120]
call fcn.00412665
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret
mov ecx, dword [ebp + 8]
mov edx, 0x47734b
call fcn.004130b1
test al, al
jne 0x414dc3
mov edx, dword [ebp + 8]
mov eax, edx
cmp dword [edx + 0x14], 0x10
jb 0x414d8a
mov eax, dword [edx]
mov ecx, dword [edx + 0x10]
lea edi, [eax + ecx]
mov eax, edx
jb 0x414d96
mov eax, dword [edx]
add ecx, eax
cmp dword [edx + 0x14], 0x10
mov eax, edx
jb 0x414da2
mov eax, dword [edx]
push ecx
push eax
lea ecx, [ebp + 0xc]
call fcn.00419a44
pop ecx
pop ecx
mov ecx, dword [ebp + 8]
push edi
push dword [eax]
lea eax, [ebp - 0x90]
push eax
call fcn.0041989d
push 0xf
pop edi
push 0x477fb0
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], edi
mov byte [ebp - 0x30], bl
call fcn.004127d6
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0xc
call fcn.004359c0
pop ecx
push eax
lea ecx, [ebp - 0x84]
call fcn.00419809
lea ecx, [ebp - 0xac]
call fcn.004123d3
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 4
call fcn.00412665
push ecx
push 0x477fb4
mov ecx, esi
call fcn.00411add
cmp eax, 0xffffffff
jne 0x414e36
push esi
lea ecx, [ebp - 0x120]
call fcn.00411cc1
jmp 0x414faa
push 0x4774f4
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], edi
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0xd
push eax
mov edx, esi
lea ecx, [ebp - 0x5c]
call fcn.004359c0
pop ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xf
call fcn.00412665
push 0x18
mov esi, ebx
pop edi
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x5c]
sub eax, ecx
cdq
idiv edi
mov dword [ebp + 0xc], esi
cmp esi, eax
jae 0x414f9e
imul eax, esi, 0x18
push ecx
push 0x477fb4
mov dword [ebp - 0x8c], eax
lea esi, [ecx + eax]
mov ecx, esi
call fcn.00411add
cmp eax, 0xffffffff
je 0x414f64
cmp dword [esi + 0x14], 0x10
mov eax, esi
jb 0x414eb2
mov eax, dword [esi]
mov ecx, dword [esi + 0x10]
add eax, ecx
cmp dword [esi + 0x14], 0x10
mov dword [ebp - 0x88], eax
mov eax, esi
jb 0x414ec7
mov eax, dword [esi]
lea edi, [ecx + eax]
mov ecx, esi
jb 0x414ed0
mov ecx, dword [esi]
mov eax, edi
sub eax, ecx
push eax
push 0x25
push ecx
call fcn.00440a90
add esp, 0xc
mov ecx, edi
test eax, eax
cmovne ecx, eax
cmp ecx, edi
je 0x414eff
lea eax, [ecx + 1]
jmp 0x414efb
mov dl, byte [eax]
cmp dl, 0x25
je 0x414efa
mov byte [ecx], dl
inc ecx
inc eax
cmp eax, edi
jne 0x414ef0
push dword [ebp - 0x88]
lea eax, [ebp - 0x90]
push ecx
push eax
mov ecx, esi
call fcn.0041989d
mov eax, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x8c]
add eax, esi
cmp dword [eax + 0x14], 0x10
jb 0x414f27
mov eax, dword [eax]
push eax
call fcn.004446ba
pop ecx
test eax, eax
je 0x414f57
mov eax, dword [ebp - 0x5c]
add eax, esi
cmp dword [eax + 0x14], 0x10
jb 0x414f3f
mov eax, dword [eax]
push eax
call fcn.004446ba
pop ecx
push eax
lea ecx, [ebp - 0x120]
call fcn.00411c7b
push 0x18
pop edi
jmp 0x414f95
lea ecx, [ebp - 0x5c]
call fcn.004123d3
jmp 0x414d31
push esi
mov edx, 0x4774f4
lea ecx, [ebp - 0x108]
call fcn.004198f5
pop ecx
push eax
lea ecx, [ebp - 0x120]
mov byte [ebp - 4], 0x10
call fcn.00411c9c
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0xf
call fcn.00412665
mov esi, dword [ebp + 0xc]
inc esi
jmp 0x414e70
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 4
call fcn.004123d3
mov byte [ebp + 0xc], bl
lea edx, [ebp - 0x120]
push dword [ebp + 0xc]
lea ecx, [ebp - 0x30]
call fcn.004140e0
pop ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x11
call fcn.0040b99e
lea ecx, [ebp - 0x30]
mov byte [ebp + 0xf], al
mov byte [ebp - 4], 4
call fcn.00412448
cmp byte [ebp + 0xf], 0
je 0x414d31
mov byte [ebp + 0xc], bl
lea edx, [ebp - 0x120]
push dword [ebp + 0xc]
lea ecx, [ebp - 0x30]
call fcn.004140e0
cmp byte [ebp + 0x14], 0
pop ecx
je 0x415809
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x12
push eax
lea ecx, [ebp - 0x98]
call fcn.0040b613
lea ecx, [ebp - 0x30]
call fcn.00412448
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0xcc]
call fcn.0040c654
mov edi, dword [ebp - 0xcc]
mov esi, dword [ebp - 0xc8]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], esi
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0xcc]
call fcn.0040c654
mov ecx, dword [ebp - 0xc8]
xorps xmm0, xmm0
movlpd qword [ebp - 0xa0], xmm0
mov eax, ebx
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], ebx
test ecx, ecx
je 0x415081
call fcn.00409de0
mov eax, ebx
mov byte [ebp - 4], 0x16
cmp edi, eax
je 0x4157f3
mov esi, dword [ebp + 0x10]
mov edx, 0x47734b
mov ecx, esi
mov byte [ebp - 4], 0x17
call fcn.004130b1
test al, al
jne 0x41514c
push 0x477fb0
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x18
push eax
mov edx, esi
lea ecx, [ebp - 0x5c]
call fcn.004359c0
pop ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x1a
call fcn.00412665
mov edi, ebx
mov eax, dword [ebp - 0x58]
sub eax, dword [ebp - 0x5c]
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x41513d
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x74]
add ecx, 0x20
push ecx
push eax
call fcn.00412dd2
or dword [ebp - 0x14], 0x100
lea ecx, [ebp - 0x74]
imul eax, edi, 0x18
push ebx
add eax, dword [ebp - 0x5c]
push eax
call fcn.00411b0e
lea ecx, [ebp - 0x74]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
jne 0x41512c
inc edi
jmp 0x4150e3
lea ecx, [ebp - 0x5c]
call fcn.004123d3
mov byte [ebp - 4], 0x16
jmp 0x4157d7
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x17
call fcn.004123d3
mov edi, dword [ebp + 0xc]
add edi, 0x20
mov ecx, edi
call fcn.00414960
test al, al
je 0x4157d0
push ecx
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00412dd2
or dword [ebp - 0x14], 0x800
mov cl, 0x65
mov dword [ebp - 0x50], 0xe8efb465
mov edx, ebx
mov word [ebp - 0x4c], 0xf6
not cl
xor cl, byte [ebp + edx - 0x4f]
mov byte [ebp + edx - 0x4f], cl
inc edx
cmp edx, 4
jae 0x415197
mov cl, byte [ebp - 0x50]
jmp 0x415182
push ecx
lea eax, [ebp - 0x4f]
mov byte [ebp - 0x4b], bl
push eax
lea ecx, [ebp - 0x30]
call fcn.00411add
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
jne 0x415134
push ecx
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00412dd2
or dword [ebp - 0x14], 0x4000
mov cl, 0x62
mov dword [ebp - 0x36], 0xf3f1b362
mov edx, ebx
mov word [ebp - 0x32], 0xf6
not cl
xor cl, byte [ebp + edx - 0x35]
mov byte [ebp + edx - 0x35], cl
inc edx
cmp edx, 4
jae 0x4151f3
mov cl, byte [ebp - 0x36]
jmp 0x4151de
push ecx
lea eax, [ebp - 0x35]
mov byte [ebp - 0x31], bl
push eax
lea ecx, [ebp - 0x30]
call fcn.00411add
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
je 0x4154b1
cmp byte [ebp + 0x18], 0
je 0x4154b1
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x90], eax
push ecx
push eax
mov ecx, edi
call fcn.00412dd2
mov esi, dword [ebp - 0x14]
lea ecx, [ebp - 0x108]
or esi, 0x20000
mov dword [ebp - 0x14], esi
call fcn.0043231b
lea ecx, [ebp - 0xc4]
add esp, 0x18
cmp ecx, eax
je 0x41526a
mov byte [ebp - 0x8c], bl
push dword [ebp - 0x8c]
push eax
call fcn.00412943
lea ecx, [ebp - 0x108]
call fcn.00412665
mov edx, 0x47734b
lea ecx, [ebp - 0xc4]
call fcn.004130b1
test al, al
jne 0x415134
mov ecx, dword [ebp + 8]
mov edx, 0x47734b
call fcn.004130b1
test al, al
jne 0x4154b4
mov edi, ebx
mov eax, dword [ebp - 0x80]
sub eax, dword [ebp - 0x84]
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x415134
cmp dword [ebp - 0xb0], 0x10
lea edx, [ebp - 0xc4]
cmovae edx, dword [ebp - 0xc4]
imul ecx, edi, 0x18
add ecx, dword [ebp - 0x84]
cmp dword [ecx + 0x14], 0x10
jb 0x4152e0
mov ecx, dword [ecx]
call fcn.00435a74
test eax, eax
je 0x4154ab
mov byte [ebp - 0x88], bl
lea edx, [ebp - 0xc4]
push dword [ebp - 0x88]
lea ecx, [ebp - 0x74]
call fcn.004140e0
pop ecx
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0x74]
or esi, 1
mov dword [ebp - 0x14], esi
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x415375
jb 0x41532c
cmp eax, 0xbb8000
jae 0x415375
mov byte [ebp - 0x44], bl
lea edx, [ebp - 0xc4]
push dword [ebp - 0x44]
lea ecx, [ebp - 0x30]
call fcn.004140e0
pop ecx
mov dword [ebp - 4], 0x1c
lea ecx, [ebp - 0x30]
or esi, 2
mov dword [ebp - 0x14], esi
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x415375
jb 0x41536f
cmp esi, eax
jae 0x415375
mov byte [ebp + 0xf], 1
jmp 0x415378
mov byte [ebp + 0xf], bl
mov eax, dword [ebp - 0x14]
test al, 2
je 0x415390
and eax, 0xfffffffd
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x14], eax
call fcn.00412448
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], 0x17
test al, 1
je 0x4153a9
and eax, 0xfffffffe
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x14], eax
call fcn.00412448
cmp byte [ebp + 0xf], 0
je 0x4154a8
push 0x4774f4
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x1d
push eax
lea edx, [ebp - 0xc4]
lea ecx, [ebp - 0xac]
call fcn.004359c0
pop ecx
push eax
lea ecx, [ebp - 0xd8]
call fcn.00419809
lea ecx, [ebp - 0xac]
call fcn.004123d3
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x17
call fcn.00412665
mov esi, dword [ebp - 0xd4]
push ecx
lea ecx, [ebp - 0x108]
add esi, 0xffffffe8
call fcn.00419997
pop ecx
push esi
mov ecx, eax
mov byte [ebp - 4], 0x1e
call fcn.00411c9c
push eax
lea ecx, [ebp - 0x74]
call fcn.00411d10
or dword [ebp - 0x14], 0x1000000
mov byte [ebp - 4], 0x1f
lea esi, [ebp - 0x74]
cmp dword [ebp - 0x60], 0x10
cmovae esi, dword [ebp - 0x74]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0xc4]
call fcn.0041497c
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x108]
call fcn.00412665
lea ecx, [ebp - 0xd8]
call fcn.004197bb
jmp 0x415134
mov esi, dword [ebp - 0x14]
inc edi
jmp 0x4152a4
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp + 8]
mov edx, 0x47734b
call fcn.004130b1
test al, al
jne 0x41569b
mov edi, ebx
mov eax, dword [ebp - 0x80]
sub eax, dword [ebp - 0x84]
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x4157d0
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x108]
push eax
add ecx, 0x20
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x20
push ecx
mov ecx, eax
call fcn.00412dd2
or esi, 0x2000000
lea edx, [ebp - 0x30]
cmp dword [ebp - 0x1c], 0x10
mov dword [ebp - 0x14], esi
cmovae edx, dword [ebp - 0x30]
imul ecx, edi, 0x18
add ecx, dword [ebp - 0x84]
cmp dword [ecx + 0x14], 0x10
jb 0x415529
mov ecx, dword [ecx]
call fcn.00435a74
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0x17
call fcn.00412448
test esi, esi
je 0x415692
mov esi, dword [ebp + 0xc]
lea ecx, [esi + 0x20]
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x415692
jb 0x415574
cmp eax, 0x4e2000
jae 0x415692
lea ecx, [esi + 0x20]
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x415692
jb 0x41559d
cmp esi, eax
jae 0x415692
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x138]
push eax
add ecx, 0x20
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 0x21
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x14], 0x10000000
push ecx
lea ecx, [ebp - 0x150]
mov byte [ebp - 4], 0x22
call fcn.00419997
pop ecx
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 0x23
push ecx
mov edx, eax
lea ecx, [ebp - 0x108]
call fcn.004199f7
pop ecx
mov esi, eax
mov byte [ebp - 4], 0x24
cmp dword [esi + 0x14], 0x10
jb 0x415601
mov esi, dword [esi]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
mov byte [ebp - 4], 0x25
lea eax, [ebp - 0x74]
mov ecx, dword [ebp + 0xc]
add ecx, 0x20
push ecx
push eax
call fcn.00412dd2
mov esi, dword [ebp - 0x14]
lea edx, [ebp - 0x30]
or esi, 0x80000000
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x14], esi
call fcn.0041497c
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x108]
call fcn.00412665
lea ecx, [ebp - 0x150]
call fcn.00412665
lea ecx, [ebp - 0xf0]
call fcn.00412665
lea ecx, [ebp - 0x138]
mov byte [ebp - 4], 0x17
call fcn.00412448
jmp 0x415695
mov esi, dword [ebp - 0x14]
inc edi
jmp 0x4154cb
mov ecx, edi
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x4157d0
jb 0x4156bc
cmp eax, 0x4e2000
jae 0x4157d0
mov ecx, edi
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x4157d0
jb 0x4156e4
cmp esi, eax
jae 0x4157d0
lea eax, [ebp - 0x108]
mov ecx, edi
push eax
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 0x26
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x18], 4
push ecx
lea ecx, [ebp - 0x150]
mov byte [ebp - 4], 0x27
call fcn.00419997
pop ecx
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 0x28
push ecx
mov edx, eax
lea ecx, [ebp - 0x138]
call fcn.004199f7
pop ecx
mov esi, eax
mov byte [ebp - 4], 0x29
cmp dword [esi + 0x14], 0x10
jb 0x415741
mov esi, dword [esi]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
push ecx
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 0x2a
push eax
mov ecx, edi
call fcn.00412dd2
or dword [ebp - 0x18], 0x20
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x74]
call fcn.0041497c
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x138]
call fcn.00412665
lea ecx, [ebp - 0x150]
call fcn.00412665
lea ecx, [ebp - 0xf0]
call fcn.00412665
lea ecx, [ebp - 0x108]
call fcn.00412448
jmp 0x4157d0
mov dword [ebp - 4], 0x16
lea ecx, [ebp - 0x40]
call fcn.0040b65d
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0xa0]
mov dword [ebp + 0xc], edi
jmp 0x415085
test esi, esi
je 0x4157fe
mov ecx, esi
call fcn.00409de0
mov ecx, dword [ebp - 0x94]
jmp 0x416015
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x2c
push eax
lea ecx, [ebp - 0xcc]
call fcn.0040b384
lea ecx, [ebp - 0x30]
call fcn.00412448
lea eax, [ebp - 0xcc]
push eax
lea ecx, [ebp - 0x98]
call fcn.0040c654
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xa0], edi
mov dword [ebp - 0x9c], esi
lea eax, [ebp - 0xcc]
push eax
lea ecx, [ebp - 0x58]
call fcn.0040c654
mov ecx, dword [ebp - 0x54]
xorps xmm0, xmm0
movlpd qword [ebp - 0x98], xmm0
mov eax, ebx
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], ebx
test ecx, ecx
je 0x415887
call fcn.00409de0
mov eax, ebx
mov byte [ebp - 4], 0x30
cmp edi, eax
je 0x416004
mov esi, dword [ebp + 0x10]
mov edx, 0x47734b
mov ecx, esi
mov byte [ebp - 4], 0x31
call fcn.004130b1
test al, al
jne 0x415964
push 0x477fb0
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x32
push eax
mov edx, esi
lea ecx, [ebp - 0xac]
call fcn.004359c0
pop ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x34
call fcn.00412665
mov edi, ebx
mov eax, dword [ebp - 0xa8]
sub eax, dword [ebp - 0xac]
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x415952
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x74]
add ecx, 0x20
push ecx
push eax
call fcn.00412dd2
or dword [ebp - 0x18], 0x400
lea ecx, [ebp - 0x74]
imul eax, edi, 0x18
push ebx
add eax, dword [ebp - 0xac]
push eax
call fcn.00411b0e
lea ecx, [ebp - 0x74]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
jne 0x41593e
inc edi
jmp 0x4158ec
lea ecx, [ebp - 0xac]
call fcn.004123d3
mov byte [ebp - 4], 0x30
jmp 0x415fdf
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0x31
call fcn.004123d3
mov edi, dword [ebp + 0xc]
add edi, 0x20
mov ecx, edi
call fcn.00414960
test al, al
je 0x415fd8
push ecx
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00412dd2
or dword [ebp - 0x18], 0x2000
mov cl, 0x5d
mov dword [ebp - 0x36], 0xd0d78c5d
mov edx, ebx
mov word [ebp - 0x32], 0xce
not cl
xor cl, byte [ebp + edx - 0x35]
mov byte [ebp + edx - 0x35], cl
inc edx
cmp edx, 4
jae 0x4159af
mov cl, byte [ebp - 0x36]
jmp 0x41599a
push ecx
lea eax, [ebp - 0x35]
mov byte [ebp - 0x31], bl
push eax
lea ecx, [ebp - 0x30]
call fcn.00411add
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
jne 0x415949
push ecx
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.00412dd2
or dword [ebp - 0x18], 0x10000
mov cl, 0x2f
mov dword [ebp - 0x3e], 0xbebcfe2f
mov edx, ebx
mov word [ebp - 0x3a], 0xbb
not cl
xor cl, byte [ebp + edx - 0x3d]
mov byte [ebp + edx - 0x3d], cl
inc edx
cmp edx, 4
jae 0x415a0b
mov cl, byte [ebp - 0x3e]
jmp 0x4159f6
push ecx
lea eax, [ebp - 0x3d]
mov byte [ebp - 0x39], bl
push eax
lea ecx, [ebp - 0x30]
call fcn.00411add
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
cmp esi, 0xffffffff
je 0x415cca
cmp byte [ebp + 0x18], 0
je 0x415cca
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x50], eax
push ecx
push eax
mov ecx, edi
call fcn.00412dd2
or dword [ebp - 0x18], 0x80000
lea ecx, [ebp - 0x138]
call fcn.0043231b
lea ecx, [ebp - 0xc4]
add esp, 0x18
cmp ecx, eax
je 0x415a7a
mov byte [ebp - 0x8c], bl
push dword [ebp - 0x8c]
push eax
call fcn.00412943
lea ecx, [ebp - 0x138]
call fcn.00412665
mov esi, 0x47734b
lea ecx, [ebp - 0xc4]
mov edx, esi
call fcn.004130b1
test al, al
jne 0x415949
mov ecx, dword [ebp + 8]
mov edx, esi
call fcn.004130b1
test al, al
jne 0x415cca
mov esi, dword [ebp - 0x84]
mov edi, ebx
mov eax, dword [ebp - 0x80]
sub eax, esi
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x415949
cmp dword [ebp - 0xb0], 0x10
lea edx, [ebp - 0xc4]
cmovae edx, dword [ebp - 0xc4]
imul ecx, edi, 0x18
add ecx, esi
cmp dword [ecx + 0x14], 0x10
jb 0x415aed
mov ecx, dword [ecx]
call fcn.00435a74
test eax, eax
je 0x415cc4
mov byte [ebp - 0x88], bl
lea edx, [ebp - 0xc4]
push dword [ebp - 0x88]
lea ecx, [ebp - 0x74]
call fcn.004140e0
pop ecx
mov byte [ebp - 4], 0x35
lea ecx, [ebp - 0x74]
mov esi, dword [ebp - 0x14]
or esi, 4
mov dword [ebp - 0x14], esi
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x415b8b
jb 0x415b3c
cmp eax, 0x4e2000
jae 0x415b8b
mov byte [ebp - 0x90], bl
lea edx, [ebp - 0xc4]
push dword [ebp - 0x90]
lea ecx, [ebp - 0x30]
call fcn.004140e0
pop ecx
mov dword [ebp - 4], 0x36
lea ecx, [ebp - 0x30]
or esi, 8
mov dword [ebp - 0x14], esi
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x415b8b
jb 0x415b85
cmp esi, eax
jae 0x415b8b
mov byte [ebp + 0xf], 1
jmp 0x415b8e
mov byte [ebp + 0xf], bl
mov eax, dword [ebp - 0x14]
test al, 8
je 0x415ba6
and eax, 0xfffffff7
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x14], eax
call fcn.00412448
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], 0x31
test al, 4
je 0x415bbf
and eax, 0xfffffffb
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x14], eax
call fcn.00412448
cmp byte [ebp + 0xf], 0
je 0x415cbe
push 0x4774f4
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x37
push eax
lea edx, [ebp - 0xc4]
lea ecx, [ebp - 0xe4]
call fcn.004359c0
pop ecx
push eax
lea ecx, [ebp - 0xd8]
call fcn.00419809
lea ecx, [ebp - 0xe4]
call fcn.004123d3
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x31
call fcn.00412665
mov esi, dword [ebp - 0xd4]
push ecx
lea ecx, [ebp - 0x138]
add esi, 0xffffffe8
call fcn.00419997
pop ecx
push esi
mov ecx, eax
mov byte [ebp - 4], 0x38
call fcn.00411c9c
push eax
lea ecx, [ebp - 0x74]
call fcn.00411d10
or dword [ebp - 0x18], 0x4000000
mov byte [ebp - 4], 0x39
lea esi, [ebp - 0x74]
cmp dword [ebp - 0x60], 0x10
cmovae esi, dword [ebp - 0x74]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0xc4]
call fcn.0041497c
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x138]
call fcn.00412665
lea ecx, [ebp - 0xd8]
call fcn.004197bb
jmp 0x415949
mov esi, dword [ebp - 0x84]
inc edi
jmp 0x415ab9
mov ecx, dword [ebp + 8]
mov edx, 0x47734b
call fcn.004130b1
test al, al
jne 0x415ea0
mov edi, ebx
mov eax, dword [ebp - 0x80]
mov esi, dword [ebp - 0x84]
sub eax, esi
push 0x18
cdq
pop ecx
idiv ecx
cmp edi, eax
jae 0x415fd8
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x138]
push eax
add ecx, 0x20
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x3a
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x18], 0x8000000
lea edx, [ebp - 0x30]
cmp dword [ebp - 0x1c], 0x10
cmovae edx, dword [ebp - 0x30]
imul ecx, edi, 0x18
add ecx, esi
cmp dword [ecx + 0x14], 0x10
jb 0x415d3b
mov ecx, dword [ecx]
call fcn.00435a74
lea ecx, [ebp - 0x30]
mov esi, eax
call fcn.00412665
lea ecx, [ebp - 0x138]
mov byte [ebp - 4], 0x31
call fcn.00412448
test esi, esi
je 0x415e9a
mov esi, dword [ebp + 0xc]
lea ecx, [esi + 0x20]
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x415e9a
jb 0x415d86
cmp eax, 0x4e2000
jae 0x415e9a
lea ecx, [esi + 0x20]
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x415e9a
jb 0x415daf
cmp esi, eax
jae 0x415e9a
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x168]
push eax
add ecx, 0x20
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0x3b
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x18], 0x40000000
push ecx
lea ecx, [ebp - 0x150]
mov byte [ebp - 4], 0x3c
call fcn.00419997
pop ecx
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0x3d
push ecx
mov edx, eax
lea ecx, [ebp - 0x138]
call fcn.004199f7
pop ecx
mov esi, eax
mov byte [ebp - 4], 0x3e
cmp dword [esi + 0x14], 0x10
jb 0x415e13
mov esi, dword [esi]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
mov byte [ebp - 4], 0x3f
lea eax, [ebp - 0x74]
mov ecx, dword [ebp + 0xc]
add ecx, 0x20
push ecx
push eax
call fcn.00412dd2
or dword [ebp - 0x44], 2
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x74]
call fcn.0041497c
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x138]
call fcn.00412665
lea ecx, [ebp - 0x150]
call fcn.00412665
lea ecx, [ebp - 0x108]
call fcn.00412665
lea ecx, [ebp - 0x168]
mov byte [ebp - 4], 0x31
call fcn.00412448
inc edi
jmp 0x415ce1
mov ecx, edi
call fcn.0041491c
and eax, 0xfffffc00
cmp edx, ebx
ja 0x415fd8
jb 0x415ec1
cmp eax, 0x4e2000
jae 0x415fd8
mov ecx, edi
call fcn.0041491c
mov esi, eax
mov ecx, edx
mov eax, dword [ebp - 0x48]
shrd esi, ecx, 0xa
cdq
shr ecx, 0xa
cmp ecx, edx
ja 0x415fd8
jb 0x415ee9
cmp esi, eax
jae 0x415fd8
lea eax, [ebp - 0x150]
mov ecx, edi
push eax
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0x40
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x44], 0x10
push ecx
lea ecx, [ebp - 0x138]
mov byte [ebp - 4], 0x41
call fcn.00419997
pop ecx
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0x42
push ecx
mov edx, eax
lea ecx, [ebp - 0x168]
call fcn.004199f7
pop ecx
mov esi, eax
mov byte [ebp - 4], 0x43
cmp dword [esi + 0x14], 0x10
jb 0x415f40
mov esi, dword [esi]
call fcn.0043295d
mov edx, esi
mov ecx, eax
call fcn.004324c4
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], bl
call fcn.004127d6
push ecx
lea eax, [ebp - 0x108]
mov byte [ebp - 4], 0x44
push eax
mov ecx, edi
call fcn.00412dd2
or dword [ebp - 0x44], 0x80
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x108]
call fcn.0041497c
lea ecx, [ebp - 0x108]
call fcn.00412665
lea ecx, [ebp - 0x30]
call fcn.00412665
lea ecx, [ebp - 0x168]
call fcn.00412665
lea ecx, [ebp - 0x138]
call fcn.00412665
lea ecx, [ebp - 0x74]
call fcn.00412665
lea ecx, [ebp - 0x150]
call fcn.00412448
jmp 0x415fd8
mov dword [ebp - 4], 0x30
lea ecx, [ebp - 0xa0]
call fcn.0040b3d1
mov edi, dword [ebp - 0xa0]
mov esi, dword [ebp - 0x9c]
mov eax, dword [ebp - 0x98]
mov dword [ebp + 0xc], edi
jmp 0x41588b
test esi, esi
je 0x41600f
mov ecx, esi
call fcn.00409de0
mov ecx, dword [ebp - 0xc8]
test ecx, ecx
je 0x414d31
call fcn.00409de0
jmp 0x414d31