Function at 0x414a40
Capabilities:
Write file on windows

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x13c
mov ebp, eax
mov dword [esp + 0x40], edx
movdqu xmm6, xmmword [0x408300]
pxor xmm3, xmm3
movdqu xmm5, xmmword [0x408310]
lea edx, [ebp + 0x2b8]
mov edi, dword [edx]
mov ecx, dword [edx - 0x10]
mov dword [esp + 0xf0], ecx
mov ecx, dword [edi]
add edi, 4
mov dword [esp + 0xec], edi
lea esi, [ebp + 0x94]
mov edi, dword [esi]
mov edx, edi
neg edx
mov dword [esp + 0x120], edx
mov edx, dword [esi - 0x3c]
mov dword [esp + 0x11c], ecx
movzx eax, byte [ebp + 0x2ac]
cmp eax, 0xf
lea ebx, [edx + 0x27a358]
mov ecx, dword [ebx]
mov edx, dword [ebx - 4]
mov dword [esp + 0xe0], edx
mov edx, 0xf
cmovl edx, eax
lea eax, [ebp + 0x2ac]
mov byte [eax], dl
shl edx, 4
mov ebx, dword [esi + 8]
movdqu xmm4, xmmword [0x408320]
movdqu xmm2, xmmword [0x4082d0]
movdqu xmm1, xmmword [0x4082e0]
lea edx, [edx + 0x403de0]
mov dword [eax + 4], edx
movdqu xmm0, xmmword [0x4082f0]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x114], ebx
mov ebx, edi
and ebx, 0xffffff
mov esi, dword [esp + 0x40]
mov eax, ebx
shr edi, 0x18
lea ecx, [esi + ebx]
mov esi, 0x1000000
cmp ecx, 0x1000000
mov edx, dword [ebp + edi*4 + 0xa4]
cmovae ecx, esi
mov dword [esp + 0x104], edx
mov edx, dword [ebp + edi*4 + 0xa0]
add edx, 0x1000000
cmp ebx, ecx
jae 0x415263
mov dword [esp + 0x48], eax
mov dword [esp + 0x124], ecx
mov dword [esp + 0xe4], edx
mov dword [esp + 0xf4], edi
mov edx, dword [esp + 0x120]
movzx edi, byte [ebp + 0x2ac]
shl edi, 4
lea esi, [ebx + edx]
movzx edx, byte [ebp + 0x6c]
and edx, esi
mov dword [esp + 0x128], esi
movzx esi, byte [edi + edx + 0x403ee0]
movzx eax, byte [edi + edx + 0x403de0]
mov dword [esp + 0x12c], esi
mov edx, dword [esp + 0x11c]
cmp esi, 9
jge 0x414c51
mov ecx, dword [esp + 0x114]
mov esi, edx
shl ecx, 4
and esi, 0x7fff
add ecx, dword [ebp + 0x58]
shl eax, 8
add ecx, eax
movd xmm0, esi
pshuflw xmm1, xmm0, 0
mov dword [esp + 0x100], ebx
movdqu xmm4, xmmword [ecx + 0x820]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edi, xmm2
add edi, 0x10
bsf edi, edi
movzx ebx, word [ecx + edi*2 + 0x81e]
sub esi, ebx
movzx eax, word [ecx + edi*2 + 0x820]
shr edx, 0xf
sub eax, ebx
imul eax, edx
mov edx, edi
shl edx, 4
add esi, eax
mov ebx, dword [esp + 0x100]
movdqu xmm3, xmmword [edx + 0x401070]
psubw xmm3, xmm4
psraw xmm3, 6
paddw xmm4, xmm3
movdqu xmmword [ecx + 0x820], xmm4
cmp esi, 0x800000
jb 0x415328
mov dword [esp + 0x11c], esi
dec edi
jmp 0x414cb5
mov esi, dword [ebp + 0x58]
mov ecx, edx
mov edi, dword [esp + 0x114]
shl eax, 5
shr ecx, 0xd
lea edi, [esi + edi*2]
mov esi, edx
and esi, 0x1fff
mov dword [esp + 0x118], edi
movzx edi, word [eax + edi]
imul ecx, edi
cmp esi, edi
jae 0x416237
mov edx, edi
add esi, ecx
neg edx
add edx, 0x2000
shr edx, 5
add edi, edx
mov edx, dword [esp + 0x118]
mov word [eax + edx], di
cmp esi, 0x800000
jb 0x416200
mov dword [esp + 0x11c], esi
xor edi, edi
test edi, edi
jne 0x414f52
mov edx, dword [ebp]
not edx
add edx, ebx
js 0x41538b
mov edi, dword [esp + 0x104]
movzx edx, byte [edx + edi]
mov dword [esp + 0x10c], edx
mov dword [esp + 0x100], ebx
movzx ebx, byte [ebp + 0x6f]
mov edx, dword [esp + 0x128]
and edx, ebx
mov ebx, dword [ebp + 0x2b0]
movzx ecx, byte [ebp + 0x71]
movzx edi, byte [edx + ebx]
mov edx, dword [esp + 0x10c]
shr edx, cl
mov ebx, edx
shl ebx, 5
mov dword [esp + 0x110], edi
lea ebx, [ebx + edx*2]
mov edx, edi
shl edx, 4
add edx, edi
add ebx, dword [ebp + 0x58]
shl edx, 9
add ebx, edx
mov edx, esi
and edx, 0x7fff
shr esi, 0xf
movdqu xmm5, xmmword [ebx + 0x4920]
movdqu xmm7, xmmword [ebx + 0x4930]
movd xmm0, edx
movdqa xmm3, xmm5
punpcklwd xmm0, xmm0
movdqa xmm2, xmm7
pshufd xmm1, xmm0, 0
pcmpgtw xmm3, xmm1
pcmpgtw xmm2, xmm1
packsswb xmm3, xmm2
pmovmskb ecx, xmm3
add ecx, 0x10000
bsf eax, ecx
movzx edi, word [ebx + eax*2 + 0x491e]
movzx ecx, word [ebx + eax*2 + 0x4920]
sub ecx, edi
imul esi, ecx
sub esi, edi
add esi, edx
lea edx, [eax - 1]
mov ecx, edx
shl ecx, 5
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x110]
movdqu xmm4, xmmword [ecx + 0x4010c0]
movdqu xmm6, xmmword [ecx + 0x4010d0]
psubw xmm4, xmm5
psubw xmm6, xmm7
psraw xmm4, 6
psraw xmm6, 6
paddw xmm5, xmm4
paddw xmm7, xmm6
movdqu xmmword [ebx + 0x4920], xmm5
movdqu xmmword [ebx + 0x4930], xmm7
mov ebx, dword [esp + 0x100]
cmp esi, 0x800000
jae 0x414e09
mov edi, dword [esp + 0xec]
shl esi, 8
movzx ecx, byte [edi]
or esi, ecx
inc edi
cmp esi, 0x800000
jb 0x415375
mov dword [esp + 0xec], edi
mov edi, dword [esp + 0x10c]
mov ecx, eax
mov dword [esp + 0x100], ebx
mov ebx, edi
shr edi, 4
and ebx, 0xf
add ebx, 0x10
cmp edx, edi
mov dword [esp + 0x11c], esi
cmove edx, ebx
mov edi, edx
shl edi, 5
shl ecx, 4
add ecx, eax
shl ecx, 6
add ecx, dword [ebp + 0x58]
lea edi, [edi + edx*2]
mov edx, esi
add ecx, edi
and edx, 0x7fff
shr esi, 0xf
movdqu xmm5, xmmword [ecx + 0x118d20]
movdqu xmm7, xmmword [ecx + 0x118d30]
movd xmm0, edx
movdqa xmm3, xmm5
punpcklwd xmm0, xmm0
movdqa xmm2, xmm7
pshufd xmm1, xmm0, 0
pcmpgtw xmm3, xmm1
pcmpgtw xmm2, xmm1
packsswb xmm3, xmm2
pmovmskb edi, xmm3
add edi, 0x10000
bsf edi, edi
movzx eax, word [ecx + edi*2 + 0x118d1e]
movzx ebx, word [ecx + edi*2 + 0x118d20]
sub ebx, eax
imul esi, ebx
sub esi, eax
add esi, edx
mov edx, edi
shl edx, 5
mov ebx, dword [esp + 0x100]
movdqu xmm4, xmmword [edx + 0x4012a0]
movdqu xmm6, xmmword [edx + 0x4012b0]
psubw xmm4, xmm5
psubw xmm6, xmm7
psraw xmm4, 7
psraw xmm6, 7
paddw xmm5, xmm4
paddw xmm7, xmm6
movdqu xmmword [ecx + 0x118d20], xmm5
movdqu xmmword [ecx + 0x118d30], xmm7
cmp esi, 0x800000
jae 0x414f18
mov edx, dword [esp + 0xec]
shl esi, 8
movzx eax, byte [edx]
or esi, eax
inc edx
cmp esi, 0x800000
jb 0x41535f
mov dword [esp + 0xec], edx
mov dword [esp + 0x11c], esi
mov esi, dword [esp + 0x108]
shl esi, 4
lea edx, [esi + edi - 0x11]
mov edi, dword [esp + 0x104]
mov byte [edi + ebx], dl
inc ebx
mov edx, dword [esp + 0x114]
movzx edx, byte [edx + 0x403fe0]
mov dword [esp + 0x114], edx
jmp 0x415252
cmp edi, 1
jne 0x415196
mov edi, dword [esp + 0x114]
mov dword [esp + 0x100], ebx
mov ebx, edi
shl ebx, 5
mov ecx, dword [ebp + 0x58]
lea edx, [ebx + edi*2]
mov dword [esp + 0xf8], edx
add ecx, edx
movzx edx, byte [ebp + 0x6d]
and edx, dword [esp + 0x128]
mov ebx, dword [ebp + 0x2b0]
movzx edx, byte [edx + ebx]
mov ebx, edx
shl ebx, 4
add ebx, edx
mov edx, esi
shl ebx, 5
and edx, 0x7fff
add ecx, ebx
shr esi, 0xf
movd xmm0, edx
movdqu xmm5, xmmword [ecx + 0x1b4360]
movdqu xmm7, xmmword [ecx + 0x1b4370]
punpcklwd xmm0, xmm0
movdqa xmm3, xmm5
pshufd xmm1, xmm0, 0
movdqa xmm2, xmm7
pcmpgtw xmm3, xmm1
pcmpgtw xmm2, xmm1
packsswb xmm3, xmm2
pmovmskb ebx, xmm3
add ebx, 0x10000
bsf eax, ebx
movzx edi, word [ecx + eax*2 + 0x1b435e]
movzx ebx, word [ecx + eax*2 + 0x1b4360]
sub ebx, edi
imul esi, ebx
sub esi, edi
add esi, edx
lea edx, [eax - 1]
mov ebx, edx
shl ebx, 5
mov dword [esp + 0xfc], eax
movdqu xmm4, xmmword [ebx + 0x4010c0]
movdqu xmm6, xmmword [ebx + 0x4010d0]
psubw xmm4, xmm5
psubw xmm6, xmm7
psraw xmm4, 6
psraw xmm6, 6
paddw xmm5, xmm4
paddw xmm7, xmm6
movdqu xmmword [ecx + 0x1b4360], xmm5
movdqu xmmword [ecx + 0x1b4370], xmm7
mov ebx, dword [esp + 0x100]
cmp esi, 0x800000
jae 0x41507b
mov edi, dword [esp + 0xec]
shl esi, 8
movzx eax, byte [edi]
or esi, eax
inc edi
cmp esi, 0x800000
jb 0x4156d3
mov dword [esp + 0xec], edi
mov dword [esp + 0x11c], esi
cmp edx, 0xa
ja 0x415638
movzx eax, word [edx*2 + 0x4084c4]
add eax, 0x41509a
jmp eax
cmp esi, ebx
jae 0x4153c0
not esi
xor ecx, ecx
add esi, ebx
mov edx, esi
and esi, 0xffffff
sar edx, 0x18
add edx, dword [esp + 0xf4]
mov eax, dword [esp + 0x104]
cmovl ecx, dword [esp + 0xf0]
add edx, ecx
add eax, ebx
lea ecx, [edi + eax]
add esi, dword [ebp + edx*4 + 0xa4]
sub esi, eax
movzx edx, byte [eax + esi]
mov byte [eax], dl
inc eax
cmp eax, ecx
jb 0x415184
add ebx, edi
jmp 0x415252
cmp edi, 2
jne 0x415252
cmp dword [esp + 0x12c], 4
ja 0x415252
mov edx, dword [esp + 0x12c]
movzx eax, word [edx*2 + 0x4084dc]
add eax, 0x4151c3
jmp eax
cmp ebx, dword [esp + 0x124]
jb 0x414b66
mov eax, dword [esp + 0x48]
mov edx, dword [ebp + 0x2d4]
mov esi, ebx
sub esi, eax
add eax, dword [esp + 0x104]
cmp dword [edx], 0
je 0x43652b
mov edi, dword [edx + 4]
push esi
push eax
push dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov dword [esp + 0x50], edx
call fcn.00421410
add esp, 0xc
mov edx, dword [esp + 0x44]
mov dword [edx], 2
mov dword [edx + 4], esi
push dword [edi]
call dword [sym.imp.KERNEL32.dll_SetEvent]
push 0xffffffffffffffff
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 8]
test eax, eax
jl 0x41629c
lea eax, [ebp + 0x94]
mov edx, dword [eax]
add dword [ebp + 0x2c0], esi
add edx, esi
sub dword [esp + 0x40], esi
mov dword [eax], edx
cmp ebx, 0x1000000
ja 0x4156e9
cmp dword [esp + 0x40], 0
jne 0x43653f
lea eax, [ebp + 0x58]
mov edx, dword [eax]
mov ebx, dword [esp + 0x114]
mov ecx, dword [esp + 0xc0]
mov dword [eax + 0x44], ebx
mov dword [edx + 0x27a358], ecx
mov ecx, dword [eax]
mov eax, dword [esp + 0xe0]
mov dword [ecx + 0x27a354], eax
xor eax, eax
add esp, 0x13c
pop ebp
pop ebx
pop edi
pop esi
ret
mov edx, dword [esp + 0xec]
shl esi, 8
movzx eax, byte [edx]
or esi, eax
inc edx
cmp esi, 0x800000
jb 0x41534c
mov dword [esp + 0xec], edx
jmp 0x414c47
shl esi, 8
movzx eax, byte [edx]
or esi, eax
inc edx
cmp esi, 0x800000
jb 0x41534c
jmp 0x415340
shl esi, 8
movzx eax, byte [edx]
or esi, eax
inc edx
cmp esi, 0x800000
jb 0x41535f
jmp 0x414f11
shl esi, 8
movzx ecx, byte [edi]
or esi, ecx
inc edi
cmp esi, 0x800000
jb 0x415375
jmp 0x414e02
mov eax, edx
xor edi, edi
sar eax, 0x18
and edx, 0xffffff
add eax, dword [esp + 0xf4]
cmovl edi, dword [esp + 0xf0]
add eax, edi
mov edi, dword [ebp + eax*4 + 0xa4]
movzx edx, byte [edi + edx]
mov dword [esp + 0x10c], edx
jmp 0x414cdc
not esi
xor edx, edx
add esi, ebx
mov ecx, esi
mov eax, esi
sar ecx, 0x18
and eax, 0xffffff
add ecx, dword [esp + 0xf4]
cmovl edx, dword [esp + 0xf0]
add ecx, edx
lea edx, [edi + eax]
cmp edx, 0x1000000
ja 0x41616c
sub eax, ebx
add edi, ebx
mov esi, dword [esp + 0x104]
add eax, dword [ebp + ecx*4 + 0xa4]
movzx edx, byte [eax + ebx]
mov byte [esi + ebx], dl
inc ebx
cmp ebx, edi
jae 0x415252
movzx edx, byte [eax + ebx]
mov byte [esi + ebx], dl
inc ebx
cmp ebx, edi
jb 0x415404
jmp 0x415252
mov edi, dword [esp + 0xfc]
add edi, 0xfffffff3
mov esi, dword [ebp + edi*4]
je 0x4156af
mov ecx, edi
shr ecx, 1
test ecx, ecx
jbe 0x4156ce
mov edx, dword [esp + 0xfc]
xor eax, eax
mov dword [esp + 0x100], ebx
mov dword [esp + 0xbc], ebp
lea edx, [ebp + edx*4]
lea ebx, [eax*8]
inc eax
neg ebx
add ebx, edx
mov ebp, dword [ebx - 0x38]
mov dword [ebx - 0x34], ebp
mov ebp, dword [ebx - 0x3c]
mov dword [ebx - 0x38], ebp
cmp eax, ecx
jb 0x41566b
mov ebx, dword [esp + 0x100]
lea edx, [eax + eax + 1]
mov ebp, dword [esp + 0xbc]
dec edx
cmp edx, edi
jae 0x4156af
mov edi, dword [esp + 0xfc]
sub edi, edx
mov edx, dword [ebp + edi*4 - 0x38]
mov dword [ebp + edi*4 - 0x34], edx
lea eax, [esp + 0x114]
mov edx, dword [eax]
mov dword [ebp], esi
movzx edi, byte [edx + 0x404000]
mov dword [eax], edi
mov edi, 2
jmp 0x415145
xor edx, edx
inc edx
jmp 0x415699
shl esi, 8
movzx eax, byte [edi]
or esi, eax
inc edi
cmp esi, 0x800000
jb 0x4156d3
jmp 0x415074
shr edx, 0x18
mov eax, dword [ebp + edx*4 + 0xa4]
lea ecx, [esp + 0x104]
mov edx, dword [ecx]
add edx, 0x1000000
mov dword [ecx], edx
cmp eax, edx
jne 0x436519
jmp 0x4152e5
mov edx, dword [esp + 0x104]
or esi, 0xff000000
mov dword [esp + 0xbc], ebp
add edi, ebx
add edx, ebx
mov dword [esp + 0x30], edx
sub ebx, esi
mov edx, dword [ebp + ecx*4 + 0xa4]
add eax, edx
mov esi, dword [esp + 0x30]
add edx, 0x1000000
movdqu xmm0, xmmword [eax]
movdqu xmmword [esi], xmm0
lea ebp, [eax + 0x10]
cmp ebp, edx
jae 0x4161c0
movdqu xmm0, xmmword [eax + 0x10]
add eax, 0x20
movdqu xmmword [esi + 0x10], xmm0
add esi, 0x20
cmp eax, edx
jb 0x41619d
mov ebp, dword [esp + 0xbc]
cmp ebx, edi
jae 0x415252
mov esi, dword [ebp + ecx*4 + 0xa8]
mov eax, dword [esp + 0x104]
sub esi, ebx
movzx edx, byte [esi + ebx]
mov byte [eax + ebx], dl
inc ebx
cmp ebx, edi
jae 0x415252
movzx edx, byte [esi + ebx]
mov byte [eax + ebx], dl
inc ebx
cmp ebx, edi
jb 0x4161df
jmp 0x415252
mov edx, dword [esp + 0xec]
shl esi, 8
movzx edi, byte [edx]
or esi, edi
inc edx
cmp esi, 0x800000
jb 0x416224
mov dword [esp + 0xec], edx
jmp 0x414cac
shl esi, 8
movzx edi, byte [edx]
or esi, edi
inc edx
cmp esi, 0x800000
jb 0x416224
jmp 0x416218
sub edx, ecx
mov esi, edx
mov edx, edi
shr edx, 5
sub esi, edi
sub edi, edx
mov edx, dword [esp + 0x118]
mov word [eax + edx], di
cmp esi, 0x800000
jb 0x416268
mov dword [esp + 0x11c], esi
mov edi, 1
jmp 0x414cb5
mov edx, dword [esp + 0xec]
shl esi, 8
movzx edi, byte [edx]
or esi, edi
inc edx
cmp esi, 0x800000
jb 0x416289
mov dword [esp + 0xec], edx
jmp 0x416257
shl esi, 8
movzx edi, byte [edx]
or esi, edi
inc edx
cmp esi, 0x800000
jb 0x416289
jmp 0x416280
add esp, 0x13c
pop ebp
pop ebx
pop edi
pop esi
ret
and ebx, 0xffffff
mov ecx, ebx
call fcn.0041bef0
jmp 0x4152e5
push dword [edx + 0xc]
push esi
push 1
push eax
call fcn.00425b1b
add esp, 0x10
jmp 0x4152bb
mov edi, dword [ebp + 0x94]
jmp 0x414b08