Function at 0x100405c6
Capabilities:
Get file attributes
Log keystrokes via polling

Disassembly:
mov eax, 0x1006c995
call fcn.1006b3c4
sub esp, 0x134
push ebx
push esi
push edi
xor esi, esi
mov dword [ebp - 0x48], ecx
mov edi, 0xffff
mov dword [ebp - 0x5c], edx
inc esi
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x28], 0x6917
lea ecx, [ebp - 0xc4]
push esi
call fcn.1002c487
xor ebx, ebx
lea ecx, [ebp - 0xdc]
push 3
mov dword [ebp - 4], ebx
call fcn.1002c487
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x10], ebx
jmp 0x10040625
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x34], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10040617
mov dword [ebp - 0x10], ebx
jmp 0x1004063f
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc4]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x1004062f
push 3
mov dword [ebp - 0x10], ebx
pop edx
jmp 0x1004065f
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xdc]
mov dword [eax + ecx*4], 0xd9e177c4
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edx
jl 0x1004064c
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x14], ebx
jne 0x10040678
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x14]
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x14]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x28], ebx
cmp dword [ebp - 0x28], 0xf
jle 0x1004074e
mov dword [ebp - 0x10], 9
mov dword [ebp - 0x20], 0x281c1d99
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x20], 0xb6930509
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x30], 0xfffffff6
mov dword [ebp - 0x30], 5
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x1c], 0xc7fd579
mov dword [ebp - 0x24], ebx
jmp 0x100406eb
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x128], 0xfffffffb
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], edx
jl 0x100406da
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x10]
je 0x100406ff
mov edi, esi
cmp dword [ebp - 0x34], ebx
jne 0x10040701
mov edi, ebx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc4]
push 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x1c]
dec dword [ebp - 0x1c]
cmp ecx, eax
mov eax, dword [ebp - 0x34]
cmovle esi, ebx
xor edx, edx
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x20]
setne dl
xor ecx, ecx
cmp edx, eax
setle cl
sub esi, ecx
add esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 0xf
pop esi
push 3
pop edx
jg 0x100406a2
mov edi, 0xffff
lea ecx, [ebp - 0xdc]
call fcn.1002c55e
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xc4]
call fcn.1002c55e
push dword [ebp - 0x48]
movdqa xmm0, xmmword [0x10008010]
lea eax, [ebp - 0x10c]
push eax
mov dword [ebp - 0x20], edi
lea eax, [ebp - 0x11c]
mov dword [ebp - 0x10], 0xffffffff
lea ecx, [ebp - 0x70]
push eax
mov dword [ebp - 0x24], 0x2443ac46
mov dword [ebp - 0x1c], 0x6652d0da
mov dword [ebp - 0x28], ebx
push ebx
movdqu xmmword [ebp - 0x11c], xmm0
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], ebx
call fcn.100318d0
mov dword [ebp - 0x2c], 0xe4b0ad8e
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x20], 0x351f2000
jl 0x100407df
inc dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x10]
mov eax, ebx
je 0x100407e1
mov eax, esi
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], ebx
jmp 0x10040817
mov dword [ebp - 0x14], 0xc
jmp 0x1004080e
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], bl
je 0x1004080b
push 0x22fc
call dword [sym.imp.USER32.dll_DrawMenuBar]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x14
jge 0x100407f8
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 0x34
jl 0x100407ef
lea ecx, [ebp - 0x70]
call fcn.1002c55e
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x14], 0x1f7e2799
mov dword [ebp - 0x2c], 0x6046e74a
mov dword [ebp - 0x14], ebx
jmp 0x1004095e
lea ecx, [ebp - 0xac]
call fcn.1002c487
mov dword [ebp - 0x1c], 0xedc7555b
mov dword [ebp - 0x20], 0xa9d01274
mov dword [ebp - 0x24], ebx
jmp 0x1004086f
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0xac]
mov dword [eax + ecx*4], 0xb72f
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], esi
jl 0x1004085c
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x1004094d
mov dword [ebp - 0x10], 0x9cc14173
mov dword [ebp - 0x24], 0x6eab3ae5
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], ebx
jg 0x10040944
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, esi
mov eax, dword [ebp - 0xac]
setg cl
cmp ecx, 0xbfe7374
push 0
pop ecx
setl cl
sub ecx, dword [eax + edx*4]
mov eax, dword [ebp - 0x14]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x20], ecx
xor ecx, ecx
cmp dword [ebp - 0x20], eax
sete cl
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x20], 0x21d2
cmp dword [ebp - 0x20], 0x8ff
jge 0x1004092d
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x58]
push eax
push 0x10007814
call fcn.1005459b
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x58]
call fcn.100405b1
push dword [ebp - 0x4c]
push dword [ebp - 0x58]
push 0x10007bf8
call fcn.10054c24
add esp, 0x18
cmp dword [ebp - 0x10], ebx
jne 0x10040941
inc dword [ebp - 0x10]
push 1
pop esi
cmp dword [ebp - 0x10], ebx
jle 0x1004089a
xor esi, esi
inc esi
dec dword [ebp - 0x1c]
jns 0x10040880
mov dword [ebp - 0x2c], esi
lea ecx, [ebp - 0xac]
call fcn.1002c55e
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xffffffe6
push esi
jge 0x1004083e
mov dword [ebp - 0x24], 0x6917
lea ecx, [ebp - 0xd0]
call fcn.1002c487
mov dword [ebp - 4], esi
mov dword [ebp - 0x10], 0x6fe7d8a8
push 0xfffffffffffffffe
mov dword [ebp - 0x1c], 0xbe135e1f
mov dword [ebp - 0x24], ebx
pop ecx
jmp 0x100409a1
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x104], ecx
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], 4
jl 0x10040994
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x10]
jle 0x100409f6
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x100409c4
push ebx
push 0xd23
call dword [sym.imp.USER32.dll_EndDialog]
mov dword [ebp - 0x10], 0xfffffff9
jmp 0x100409eb
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x100409e8
push ebx
push 0x863
push ebx
push 0x192
call dword [sym.imp.USER32.dll_SetTimer]
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x13
jge 0x100409cd
jmp 0x10040ae8
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x10], ebx
jmp 0x10040a34
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x10040a12
push ebx
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov eax, dword [ebp - 0x10]
cmp dword [ebp + eax*4 - 0x104], ebx
jne 0x10040a2c
mov eax, dword [ebp - 0x10]
cmp dword [ebp + eax*4 - 0x104], ebx
mov eax, ebx
je 0x10040a2e
mov eax, esi
mov dword [ebp - 0x1c], eax
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 3
jle 0x10040a02
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x14]
jne 0x10040a48
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
sub edx, eax
imul edx, dword [ebp - 0x1c]
add edx, dword [ebp - 0x14]
sub edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setle cl
xor eax, eax
cmp ecx, 0x5ab
setle al
sub eax, 0x5725
neg eax
sbb eax, eax
inc eax
imul eax, eax, 7
sub eax, 0x798f03dc
je 0x10040a9f
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x10040ae8
push ebx
push 0x1284
call dword [sym.imp.USER32.dll_DrawFocusRect]
jmp 0x10040ae8
mov dword [ebp - 0x1c], 0xf4846e1d
mov dword [ebp - 0x2c], 0x2fb38a83
mov dword [ebp - 0x20], 0xfffffffd
mov eax, dword [ebp - 0x104]
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x10]
jg 0x10040ace
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x10]
jge 0x10040add
mov eax, esi
cmp dword [ebp - 0x1c], ebx
jne 0x10040adf
mov eax, ebx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
push 3
lea ecx, [ebp - 0xe8]
call fcn.1002c487
mov byte [ebp - 4], 2
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x10], ebx
jmp 0x10040b0f
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x38], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10040b01
mov dword [ebp - 0x14], edi
lea ecx, [ebp - 0x88]
mov dword [ebp - 0x10], 0x6917
push esi
call fcn.1002c487
push 3
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 3
call fcn.1002c487
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x10], ebx
jmp 0x10040b51
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x3c], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10040b43
mov dword [ebp - 0x10], ebx
jmp 0x10040b6b
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x88]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10040b5b
push 3
mov dword [ebp - 0x10], ebx
pop edx
jmp 0x10040b8b
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xf4]
mov dword [eax + ecx*4], 0xd9e177c4
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edx
jl 0x10040b78
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x14], ebx
jne 0x10040ba4
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x14]
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], 0xf
jle 0x10040c75
mov dword [ebp - 0x2c], 9
mov dword [ebp - 0x20], 0x281c1d99
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x20], 0xb6930509
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x30], 0xfffffff6
mov dword [ebp - 0x30], 5
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x1c], 0xc7fd579
mov dword [ebp - 0x24], ebx
jmp 0x10040c17
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x134], 0xfffffffb
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], edx
jl 0x10040c06
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x2c]
je 0x10040c2b
mov edi, esi
cmp dword [ebp - 0x3c], ebx
jne 0x10040c2d
mov edi, ebx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x88]
push 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x1c]
dec dword [ebp - 0x1c]
cmp ecx, eax
mov eax, dword [ebp - 0x3c]
cmovle esi, ebx
xor edx, edx
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x20]
setne dl
xor ecx, ecx
cmp edx, eax
setle cl
sub esi, ecx
add esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xf
pop esi
push 3
pop edx
jg 0x10040bce
lea ecx, [ebp - 0xf4]
call fcn.1002c55e
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 2
call fcn.1002c55e
mov dword [ebp - 0x10], ebx
jmp 0x10040ca4
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xd0]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10040c94
mov dword [ebp - 0x14], 0x1f7e2799
mov dword [ebp - 0x20], 0x6046e74a
mov dword [ebp - 0x14], ebx
jmp 0x10040d98
push esi
lea ecx, [ebp - 0x94]
call fcn.1002c487
mov dword [ebp - 0x1c], 0xedc7555b
mov dword [ebp - 0x2c], 0xa9d01274
mov dword [ebp - 0x24], ebx
jmp 0x10040cf1
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x94]
mov dword [eax + ecx*4], 0xb72f
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], esi
jl 0x10040cde
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x10040d87
mov dword [ebp - 0x10], 0x9cc14173
mov dword [ebp - 0x2c], 0x6eab3ae5
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], ebx
jg 0x10040d7e
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, esi
mov eax, dword [ebp - 0x94]
setg cl
cmp ecx, 0xbfe7374
push 0
pop ecx
setl cl
sub ecx, dword [eax + edx*4]
mov eax, dword [ebp - 0x14]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x2c], ecx
xor ecx, ecx
cmp dword [ebp - 0x2c], eax
sete cl
mov dword [ebp - 0x2c], ecx
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x2c], ebx
cmp dword [ebp - 0x10], ebx
jne 0x10040d7b
inc dword [ebp - 0x10]
push 1
pop esi
cmp dword [ebp - 0x10], ebx
jle 0x10040d18
xor esi, esi
inc esi
dec dword [ebp - 0x1c]
jns 0x10040d02
mov dword [ebp - 0x20], esi
lea ecx, [ebp - 0x94]
call fcn.1002c55e
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xffffffe6
jge 0x10040cbf
push 3
mov dword [ebp - 0x10], ebx
pop edi
jmp 0x10040dbd
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xe8]
mov dword [eax + ecx*4], 0xd9e177c4
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edi
jl 0x10040daa
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x28], ebx
jne 0x10040dd6
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x28]
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x14], ebx
jmp 0x10040e06
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x64], 4
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x10040df8
mov dword [ebp - 0x14], ebx
jmp 0x10040e1e
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x44], 0xd06ce125
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10040e10
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x10040e34
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x40], ebx
jmp 0x10040e43
mov eax, dword [ebp - 0x40]
mov dword [ebp + eax*4 - 0x64], esi
inc dword [ebp - 0x40]
cmp dword [ebp - 0x40], esi
jl 0x10040e39
mov dword [ebp - 0x24], ebx
jmp 0x1004117e
mov dword [ebp - 0x2c], 9
lea ecx, [ebp - 0xa0]
push edi
call fcn.1002c487
mov dword [ebp - 0x30], 0xe7d214c4
mov dword [ebp - 0x30], 0x7822e6e
mov dword [ebp - 0x14], ebx
jmp 0x10040e89
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xa0]
mov dword [eax + ecx*4], 0x62d5e48d
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x10040e76
mov eax, dword [ebp - 0xa0]
lea ecx, [ebp - 0xa0]
mov dword [eax], ebx
call fcn.1002c55e
mov dword [ebp - 0x30], 0x281c1d99
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x14], 4
cmp dword [ebp - 0x14], 0xfffffffc
je 0x10040f7a
push 0xfffffffffffffffe
pop edx
mov dword [ebp - 0x20], 5
mov dword [ebp - 0x1c], 0x276b87d0
mov dword [ebp - 0x20], 0x1af0
cmp dword [ebp - 0x20], 0x109e
jge 0x10040f36
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x50]
push eax
push 0x100078ec
call fcn.1005459b
mov esi, dword [ebp - 0x54]
mov edi, ebx
add esp, 0xc
cmp dword [ebp - 0x50], edi
jle 0x10040f26
lea eax, [ebp - 0x60]
push eax
push 0x100077e4
call fcn.1005459b
mov eax, dword [ebp - 0x54]
cdq
idiv dword [ebp - 0x60]
pop ecx
pop ecx
test edx, edx
jne 0x10040f20
cmp esi, eax
cmovge esi, eax
inc edi
cmp edi, dword [ebp - 0x50]
jl 0x10040f00
push esi
push 0x100077f4
call fcn.10054c24
pop ecx
pop ecx
push 0xfffffffffffffffe
pop edx
mov dword [ebp - 0x20], 0xffffffff
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x20]
sub ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
neg ecx
sbb ecx, ecx
inc ecx
cmp edx, eax
sbb eax, eax
neg eax
add ecx, eax
mov dword [ebp - 0x20], ecx
cmp dword [ebp - 0x1c], ebx
jne 0x10040f74
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xfffffffc
jne 0x10040ec3
xor esi, esi
push 3
inc esi
pop edi
mov dword [ebp - 0x14], 0xffffffe3
jmp 0x10040fd5
mov dword [ebp - 0x10], 0xa6f44401
mov dword [ebp - 0x10], ebx
jmp 0x10040fc2
push edi
lea ecx, [ebp - 0x7c]
call fcn.1002c487
mov dword [ebp - 0x1c], ebx
jmp 0x10040faa
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x7c]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edi
jl 0x10040f9d
mov eax, dword [ebp - 0x7c]
lea ecx, [ebp - 0x7c]
cmp dword [eax + 8], ebx
jne 0x10040fca
call fcn.1002c55e
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xf
jge 0x10040f8f
jmp 0x10040fcf
call fcn.1002c55e
mov eax, dword [ebp - 0x10]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xfffffff9
jne 0x10040f83
mov dword [ebp - 0x30], esi
lea ecx, [ebp - 0xb8]
mov dword [ebp - 0x30], 0xb6930509
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x10], 0x11c15747
mov dword [ebp - 0x20], 0xcf1d65f4
push edi
call fcn.1002c487
mov dword [ebp - 0x20], 0x73046773
mov dword [ebp - 0x20], 0xe85ec415
mov dword [ebp - 0x20], 0x5bed8572
mov dword [ebp - 0x14], ebx
jmp 0x1004102f
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xb8]
mov dword [eax + ecx*4], 0xfffffffd
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x1004101c
mov dword [ebp - 0x14], ebx
jmp 0x1004104a
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x10c], 0xd2f55126
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10041039
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x20]
add edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
neg edx
mov eax, dword [ebp - 0x10]
sbb edx, edx
neg edx
add eax, edx
add ecx, eax
xor eax, eax
test ecx, ecx
mov ecx, dword [ebp - 0xb8]
setle al
cmp eax, 0xfffc
sbb eax, eax
inc eax
mov dword [ecx], eax
jne 0x1004108c
cmp dword [ecx + 4], ebx
mov ecx, ebx
je 0x1004108e
mov ecx, esi
mov eax, dword [ebp - 0x10]
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x10]
setl dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
cmp ecx, eax
setge dl
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x10]
sub eax, 0x44ad72d7
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x20]
neg eax
sbb eax, eax
xor edx, edx
inc eax
imul ecx, eax, 0x314e
mov eax, dword [ebp - 0x10]
cmp ecx, eax
lea ecx, [ebp - 0xb8]
setg dl
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x10]
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x10c], eax
call fcn.1002c55e
mov dword [ebp - 0x20], 0xfffffff6
push 3
mov dword [ebp - 0x20], 5
pop ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x14], 0xc7fd579
mov dword [ebp - 0x1c], ebx
jmp 0x1004112a
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x140], 0xfffffffb
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ecx
jl 0x10041119
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x2c]
je 0x1004113e
mov edi, esi
cmp dword [ebp - 0x38], ebx
jne 0x10041140
mov edi, ebx
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0xd0]
push 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x14]
dec dword [ebp - 0x14]
cmp ecx, eax
mov eax, dword [ebp - 0x38]
cmovle esi, ebx
xor edx, edx
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x30]
setne dl
xor ecx, ecx
cmp edx, eax
setle cl
sub esi, ecx
add esi, edi
mov dword [ebp - 0x30], esi
mov eax, dword [ebp - 0x14]
inc dword [ebp - 0x24]
pop esi
push 3
pop edi
cmp dword [ebp - 0x24], 0xf
jg 0x10040e50
lea ecx, [ebp - 0xe8]
call fcn.1002c55e
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd0]
call fcn.1002c55e
mov eax, dword [ebp - 0x5c]
mov ecx, 0x3e8
cdq
idiv ecx
mov ecx, dword [ebp - 0x48]
mov esi, edx
mov edi, eax
call fcn.1004053f
mov ecx, dword [ebp - 0xc]
add eax, esi
add eax, edi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret