Function at 0x412ab0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x54
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov ecx, dword [esi + 0x1c]
lea eax, [esp + 0x54]
push eax
push ecx
mov dword [esp + 0x24], esi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x60]
mov ebp, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
sub edi, edx
movsx edx, word [esi + 0x20c]
sub ebp, ecx
shl edx, 1
mov eax, ebp
sub eax, edx
dec eax
cmp eax, 1
mov dword [esp + 0x18], edi
jge 0x412afc
mov eax, 1
push 8
push 1
lea ecx, [esi + 0x134]
push eax
call fcn.004129b0
movsx ecx, word [esi + 0x20c]
shl ecx, 1
mov eax, edi
sub eax, ecx
cmp eax, 1
jge 0x412b23
mov eax, 1
push 8
push eax
lea ecx, [esi + 0x168]
push 1
call fcn.004129b0
push 8
push edi
lea ecx, [esi + 0x64]
push ebp
call fcn.004129b0
mov esi, dword [sym.imp.USER32.dll_GetSysColor]
push 0x14
call esi
push 0xf
mov dword [esp + 0x3c], eax
call esi
push 0x10
mov ebx, eax
call esi
movzx edx, al
mov dword [esp + 0x34], eax
shr ax, 8
mov word [esp + 0x14], ax
mov ax, bx
shr ax, 8
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x34]
shr eax, 0x10
movzx esi, bl
mov dword [esp + 0x3c], eax
mov eax, edx
xor ecx, ecx
shr ebx, 0x10
neg eax
shl edx, 7
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ecx
mov esi, 0x80
mov dword [esp + 0x44], eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x28]
add eax, edx
cdq
and edx, 0x7f
add eax, edx
movzx edx, byte [esp + 0x10]
mov ebx, eax
imul edx, ecx
movzx eax, byte [esp + 0x14]
imul eax, esi
add eax, edx
cdq
and edx, 0x7f
add eax, edx
movzx edx, byte [esp + 0x2c]
sar eax, 7
imul edx, ecx
mov dword [esp + 0x20], eax
movzx eax, byte [esp + 0x3c]
imul eax, esi
add eax, edx
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + 0x64]
add edx, 0x64
sar eax, 7
sar ebx, 7
test edi, edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], edi
je 0x412c40
mov dx, word [edx + 0x30]
test dx, dx
je 0x412c40
movzx di, cl
cmp di, dx
jae 0x412c40
mov edi, dword [esp + 0x24]
movzx edx, cl
shl edx, 2
mov byte [edx + edi + 0x28], al
mov al, byte [esp + 0x20]
mov byte [edx + edi + 0x29], al
inc edx
mov eax, edi
inc edx
mov byte [edx + eax + 0x28], bl
mov byte [edx + eax + 0x29], 0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + 0x134]
add edx, 0x134
test edi, edi
mov dword [esp + 0x24], edi
je 0x412c91
mov dx, word [edx + 0x30]
test dx, dx
je 0x412c91
movzx di, cl
cmp di, dx
jae 0x412c91
mov edi, dword [esp + 0x24]
movzx edx, cl
shl edx, 2
mov byte [edx + edi + 0x28], al
mov al, byte [esp + 0x20]
mov byte [edx + edi + 0x29], al
inc edx
mov eax, edi
inc edx
mov byte [edx + eax + 0x28], bl
mov byte [edx + eax + 0x29], 0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + 0x168]
add edx, 0x168
test edi, edi
mov dword [esp + 0x24], edi
je 0x412cde
mov dx, word [edx + 0x30]
test dx, dx
je 0x412cde
movzx di, cl
cmp di, dx
jae 0x412cde
mov edi, dword [esp + 0x24]
movzx edx, cl
shl edx, 2
mov byte [edx + edi + 0x28], al
mov al, byte [esp + 0x20]
inc edx
mov byte [edx + edi + 0x28], al
inc edx
mov eax, edi
mov byte [edx + eax + 0x28], bl
mov byte [edx + eax + 0x29], 0
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
add edx, edi
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x30]
add edx, eax
inc ecx
dec esi
cmp esi, 0xffffffff
mov dword [esp + 0x30], edx
jg 0x412ba6
mov eax, dword [esp + 0x38]
movzx edx, al
mov cx, ax
shr eax, 0x10
shr cx, 8
mov dword [esp + 0x44], eax
movzx eax, byte [esp + 0x2c]
mov word [esp + 0x14], cx
mov ecx, eax
imul eax, eax, 0x7f
neg ecx
mov dword [esp + 0x50], ecx
movzx ecx, byte [esp + 0x10]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x28], edx
mov edx, ecx
imul ecx, ecx, 0x7f
neg edx
mov dword [esp + 0x4c], edx
mov edx, edi
neg edx
imul edi, edi, 0x7f
mov dword [esp + 0x24], 1
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x48], edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], edi
lea ebx, [ebx]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add eax, edx
cdq
mov edi, dword [esp + 0x30]
and edx, 0x7f
add eax, edx
mov ebx, eax
movzx eax, byte [esp + 0x14]
imul eax, ecx
add eax, edi
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x1c]
sar eax, 7
mov esi, dword [edi + 0x64]
mov dword [esp + 0x20], eax
movzx eax, byte [esp + 0x44]
imul eax, ecx
add eax, edx
cdq
and edx, 0x7f
add eax, edx
add edi, 0x64
mov dl, cl
add dl, 0x7f
sar ebx, 7
sar eax, 7
test esi, esi
mov byte [esp + 0x10], dl
je 0x412e07
mov di, word [edi + 0x30]
test di, di
je 0x412e07
movzx dx, dl
cmp dx, di
jae 0x412e03
movzx ecx, byte [esp + 0x10]
mov dl, byte [esp + 0x20]
shl ecx, 2
mov byte [ecx + esi + 0x28], al
inc ecx
mov byte [ecx + esi + 0x28], dl
inc ecx
mov byte [ecx + esi + 0x28], bl
mov byte [ecx + esi + 0x29], 0
mov ecx, dword [esp + 0x24]
mov dl, byte [esp + 0x10]
mov esi, dword [esp + 0x1c]
mov esi, dword [esi + 0x134]
test esi, esi
mov dword [esp + 0x40], esi
je 0x412e5b
mov esi, dword [esp + 0x1c]
mov si, word [esi + 0x164]
test si, si
je 0x412e5b
movzx di, dl
cmp di, si
jae 0x412e5b
mov esi, dword [esp + 0x40]
movzx ecx, dl
mov dl, byte [esp + 0x20]
shl ecx, 2
mov byte [ecx + esi + 0x28], al
inc ecx
mov byte [ecx + esi + 0x28], dl
mov dl, byte [esp + 0x10]
inc ecx
mov byte [ecx + esi + 0x28], bl
mov byte [ecx + esi + 0x29], 0
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov edi, dword [esi + 0x168]
add esi, 0x168
test edi, edi
mov dword [esp + 0x40], edi
je 0x412eaa
mov si, word [esi + 0x30]
test si, si
je 0x412eaa
movzx di, dl
cmp di, si
jae 0x412eaa
mov esi, dword [esp + 0x40]
movzx ecx, dl
shl ecx, 2
mov byte [ecx + esi + 0x28], al
mov al, byte [esp + 0x20]
inc ecx
mov byte [ecx + esi + 0x28], al
inc ecx
mov byte [ecx + esi + 0x28], bl
mov byte [ecx + esi + 0x29], 0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
add ebx, edx
mov edx, dword [esp + 0x4c]
add esi, edx
mov edx, dword [esp + 0x34]
add edi, eax
mov eax, dword [esp + 0x50]
inc ecx
add edx, eax
cmp ecx, 0x81
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], edx
jl 0x412d70
movzx ecx, byte [esp + 0x74]
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x1c]
push ecx
push edx
lea ecx, [esi + 0x64]
call fcn.00412820
mov eax, dword [esi + 0x134]
test eax, eax
je 0x412f2a
mov cx, word [esi + 0x164]
mov edx, dword [eax]
shl cx, 2
movzx ecx, cx
add ecx, eax
add ecx, edx
jmp 0x412f2c
xor ecx, ecx
mov edi, dword [esi + 0x13c]
xor eax, eax
test edi, edi
jle 0x412f59
jmp 0x412f40
mov edx, eax
and edx, 0x80000001
jns 0x412f4f
dec edx
or edx, 0xfffffffe
inc edx
neg dl
mov byte [ecx + eax], dl
inc eax
cmp eax, edi
jl 0x412f40
mov ecx, dword [esi + 0x168]
test ecx, ecx
je 0x412f79
mov ax, word [esi + 0x198]
mov edx, dword [ecx]
shl ax, 2
movzx eax, ax
add eax, ecx
add eax, edx
jmp 0x412f7b
xor eax, eax
mov edi, dword [esi + 0x174]
xor ecx, ecx
test edi, edi
jle 0x412fab
jmp 0x412f90
mov edx, ecx
and edx, 0x80000001
jns 0x412f9f
dec edx
or edx, 0xfffffffe
inc edx
neg dl
mov byte [eax], dl
add eax, 4
inc ecx
cmp ecx, edi
jl 0x412f90
mov eax, dword [esi + 0x90]
lea ebx, [esi + 0x64]
mov dword [esp + 0x78], eax
mov eax, dword [ebx]
test eax, eax
je 0x412fd5
mov cx, word [ebx + 0x30]
shl cx, 2
movzx esi, cx
mov ecx, dword [eax]
add esi, eax
add esi, ecx
mov dword [esp + 0x10], esi
jmp 0x412fe1
mov dword [esp + 0x10], 0
mov esi, dword [esp + 0x10]
movzx ecx, byte [esp + 0x6c]
lea eax, [ecx + ecx]
cmp eax, 1
mov dword [esp + 0x14], ecx
mov edi, 1
jl 0x412ff9
mov edi, eax
mov eax, 0x7fff
cdq
idiv edi
mov edx, dword [esp + 0x68]
mov dword [esp + 0x74], eax
mov eax, 0xff
sub eax, ecx
dec edx
cmp edx, 7
mov dword [esp + 0x28], eax
ja case.default.0x41301e
jmp dword [edx*4 + 0x413a00]
mov eax, dword [ebx]
test eax, eax
je 0x41304f
mov dx, word [ebx + 0x30]
mov ecx, dword [eax]
shl dx, 2
movzx edi, dx
add edi, eax
add edi, ecx
mov ecx, dword [ebx + 0x18]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, 0x7fff
cdq
idiv ebp
mov dword [esp + 0x2c], 0xc8
mov dword [esp + 0x50], eax
mov eax, 0x7fff
cdq
idiv dword [esp + 0x18]
mov dword [esp + 0x4c], eax
call fcn.00420722
cdq
idiv dword [esp + 0x50]
mov dword [esp + 0x6c], eax
call fcn.00420722
cdq
idiv dword [esp + 0x4c]
mov esi, dword [esp + 0x18]
cmp ebp, esi
mov edi, eax
jge 0x413095
mov esi, ebp
call fcn.00420722
mov ecx, eax
mov eax, 0x7fff
cdq
idiv esi
mov esi, eax
mov eax, ecx
cdq
idiv esi
cdq
sub eax, edx
mov esi, eax
sar esi, 1
call fcn.00420722
mov ecx, eax
mov eax, 0xa00a00a1
imul ecx
add edx, ecx
sar edx, 9
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
test esi, esi
jle 0x4131e8
mov edx, dword [esp + 0x6c]
mov ecx, ebp
sub ecx, edx
mov dword [esp + 0x24], ecx
mov ecx, edx
mov eax, edi
sub ecx, edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], esi
jmp 0x413100
mov ecx, dword [esp + 0x34]
lea esp, [esp]
mov edx, dword [esp + 0x6c]
lea edi, [ecx + edx]
test edi, edi
jle 0x41315d
cmp eax, dword [esp + 0x18]
jge 0x41315d
mov esi, dword [esp + 0x1c]
mov edx, dword [esi + 0x64]
test edx, edx
je 0x41315d
mov cx, word [esi + 0x94]
test cx, cx
je 0x41315d
test eax, eax
jl 0x41315d
cmp edi, dword [esi + 0x6c]
jge 0x41315d
mov eax, esi
mov eax, dword [eax + 0x70]
cmp dword [esp + 0x68], eax
jge 0x41315d
mov esi, dword [edx]
shl ecx, 2
movzx ecx, cx
add ecx, esi
add ecx, edx
sub eax, dword [esp + 0x68]
mov edx, dword [esp + 0x1c]
dec eax
imul eax, dword [edx + 0x90]
add eax, edi
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x68]
add eax, ecx
cmp eax, ebp
jge 0x4131be
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x4131be
mov esi, dword [esp + 0x1c]
mov edx, dword [esi + 0x64]
add esi, 0x64
test edx, edx
je 0x4131be
mov cx, word [esi + 0x30]
test cx, cx
je 0x4131be
mov eax, dword [esp + 0x24]
test eax, eax
jl 0x4131be
cmp eax, dword [esi + 8]
jge 0x4131be
mov eax, dword [esi + 0xc]
cmp dword [esp + 0x6c], eax
jge 0x4131be
mov edi, dword [edx]
shl ecx, 2
movzx ecx, cx
add ecx, edx
sub eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x24]
add ecx, edi
dec eax
imul eax, dword [esi + 0x2c]
add eax, edx
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
inc eax
dec esi
inc edx
dec ecx
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x30], ecx
jne 0x4130f8
dec dword [esp + 0x2c]
jne 0x413071
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
sub eax, ecx
sub eax, 0x28
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4138f7
mov edx, eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x30], edx
xor esi, esi
test ebp, ebp
jle 0x413273
mov eax, dword [esp + 0x6c]
cdq
idiv dword [esp + 0x18]
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x34], eax
mov eax, ebx
neg eax
imul ebx, ebp
mov dword [esp + 0x50], eax
mov eax, ebx
cdq
idiv ebp
mov cl, byte [esp + 0x34]
mov dl, byte [edi + esi]
add al, cl
add dl, al
mov byte [edi + esi], dl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
add byte [edi + esi], al
mov ecx, dword [esp + 0x50]
inc esi
add ebx, ecx
cmp esi, ebp
jl 0x413248
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
add ecx, eax
mov eax, dword [esp + 0x30]
add edi, edx
dec eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x30], eax
jne 0x413226
jmp 0x4138f7
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x41334b
mov ecx, dword [esp + 0x14]
mov eax, 0x40
sub eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov dword [esp + 0x68], 0
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x68]
cdq
idiv dword [esp + 0x18]
xor edi, edi
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, dword [esp + 0x50]
shl eax, 1
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
sar ebx, 7
add ebx, 0x80
test ebp, ebp
jle 0x413328
mov byte [esi + edi], bl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [esi + edi]
sub al, cl
add dl, al
mov byte [esi + edi], dl
inc edi
cmp edi, ebp
jl 0x413308
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
add ecx, 0xff
add esi, edx
dec eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x34], eax
jne 0x4132c2
mov eax, 0x2aaaaaab
imul ebp
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x10
mov dword [esp + 0x20], 0x10
jg 0x41336a
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
mov eax, ecx
imul eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
test ecx, ecx
mov dword [esp + 0x68], eax
jle 0x4138f7
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
neg eax
mov dword [esp + 0x2c], eax
imul eax, dword [esp + 0x20]
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], ecx
xor esi, esi
test ebp, ebp
jle 0x41345b
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x2c]
cdq
idiv dword [esp + 0x68]
mov ebx, ebp
mov dword [esp + 0x34], esi
mov ecx, eax
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
add ecx, eax
sub ecx, dword [esp + 0x20]
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
neg eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], eax
shl ebx, 7
jmp 0x4133f1
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
cmp eax, ecx
jle 0x41340b
mov eax, ebx
cdq
idiv dword [esp + 0x20]
add al, byte [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov byte [edi + esi], al
mov eax, dword [esp + 0x24]
add eax, ecx
jns 0x413421
mov eax, dword [esp + 0x34]
cdq
idiv dword [esp + 0x20]
mov dl, byte [esp + 0x28]
sub dl, al
mov byte [edi + esi], dl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [edi + esi]
sub ebx, 0x80
sub al, cl
mov ecx, dword [esp + 0x34]
add dl, al
mov eax, dword [esp + 0x24]
mov byte [edi + esi], dl
inc esi
inc eax
add ecx, 0x80
cmp esi, ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], ecx
jl 0x4133e9
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x78]
mov ecx, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x10]
add edi, esi
inc ecx
dec eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], eax
jne 0x4133a6
jmp 0x4138f7
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4138f7
mov dword [esp + 0x68], 0
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x68]
cdq
idiv dword [esp + 0x18]
xor edi, edi
mov ecx, eax
sub ecx, 0x7f
test ebp, ebp
jle 0x413568
mov eax, ecx
imul eax, ecx
imul eax, ecx
mov ecx, dword [esp + 0x14]
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
mov dword [esp + 0x50], eax
mov eax, 0x80
sub eax, ecx
mov ebx, ebp
mov dword [esp + 0x24], eax
imul ebx, ebx, 0xff
mov eax, ebx
cdq
idiv ebp
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
sar eax, 7
add eax, edx
imul eax, dword [esp + 0x24]
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
add eax, 0x80
cmp eax, ecx
jge 0x413538
mov eax, ecx
mov ecx, dword [esp + 0x28]
cmp eax, ecx
jle 0x413542
mov eax, ecx
mov byte [esi + edi], al
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov dl, byte [esp + 0x6c]
mov cl, byte [esi + edi]
sub ebx, 0xff
sub al, dl
add cl, al
mov byte [esi + edi], cl
inc edi
cmp edi, ebp
jl 0x4134f1
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
add ecx, 0xff
add esi, edx
dec eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x34], eax
jne 0x4134a4
jmp 0x4138f7
test ebp, ebp
mov dword [esp + 0x68], 0
jle 0x4138f7
mov esi, 0x80
sub esi, ecx
mov eax, ebp
imul eax, eax, 0xff
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], eax
jmp 0x4135c1
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
cdq
idiv ebp
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, esi
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
mov eax, dword [esp + 0x18]
sar ebx, 7
add ebx, 0x80
test eax, eax
jle 0x413631
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
lea esi, [ecx + edx]
mov edi, eax
lea esp, [esp]
mov byte [esi], bl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [esi]
sub al, cl
mov ecx, dword [esp + 0x78]
add dl, al
mov byte [esi], dl
add esi, ecx
dec edi
jne 0x413610
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x34]
inc eax
sub edx, 0xff
cmp eax, ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x34], edx
jl 0x4135b9
jmp 0x4138f7
mov edx, dword [esp + 0x18]
test edx, edx
jle 0x4138f7
mov eax, 0x80
sub eax, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x68], 0
mov dword [esp + 0x34], edx
jmp 0x413680
mov eax, dword [esp + 0x68]
cdq
idiv dword [esp + 0x18]
xor edi, edi
mov ecx, eax
sub ecx, 0x7f
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
imul eax, dword [esp + 0x24]
cdq
and edx, 0x7f
add eax, edx
mov ebx, eax
sar ebx, 7
add ebx, 0x80
test ebp, ebp
jle 0x4136e4
mov byte [esi + edi], bl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [esi + edi]
sub al, cl
add dl, al
mov byte [esi + edi], dl
inc edi
cmp edi, ebp
jl 0x4136c4
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
add ecx, 0xff
add esi, edx
dec eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x34], eax
jne 0x413680
jmp 0x4138f7
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4138f7
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], eax
nop
xor edi, edi
test ebp, ebp
jle 0x413787
mov eax, dword [esp + 0x30]
cdq
idiv dword [esp + 0x18]
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x34], eax
mov eax, ebx
neg eax
imul ebx, ebp
mov dword [esp + 0x50], eax
mov eax, ebx
cdq
idiv ebp
mov dl, byte [esp + 0x14]
mov cl, byte [esp + 0x34]
add al, dl
add al, cl
mov byte [esi + edi], al
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esi + edi]
sub al, byte [esp + 0x6c]
add cl, al
mov byte [esi + edi], cl
mov ecx, dword [esp + 0x50]
inc edi
add ebx, ecx
cmp edi, ebp
jl 0x413752
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x78]
add ecx, eax
mov eax, dword [esp + 0x2c]
add esi, edx
dec eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jne 0x413730
jmp 0x4138f7
sub eax, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4138f7
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], eax
lea esp, [esp]
mov eax, dword [esp + 0x34]
cdq
idiv dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
xor edi, edi
mov ebx, eax
add ebx, ecx
test ebp, ebp
jle 0x413807
mov byte [esi + edi], bl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [esi + edi]
sub al, cl
add dl, al
mov byte [esi + edi], dl
inc edi
cmp edi, ebp
jl 0x4137e7
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x30]
add edx, ecx
add esi, edi
dec eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], eax
jne 0x4137d0
jmp 0x4138f7
sub eax, ecx
test ebp, ebp
mov dword [esp + 0x68], 0
jle 0x4138f7
mov ecx, eax
neg ecx
imul eax, ebp
mov dword [esp + 0x50], ecx
mov dword [esp + 0x34], eax
lea esp, [esp]
mov eax, dword [esp + 0x34]
cdq
idiv ebp
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov eax, dword [esp + 0x18]
add ebx, ecx
test eax, eax
jle 0x413897
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x18]
lea esi, [eax + edx]
mov byte [esi], bl
call fcn.00420722
cdq
idiv dword [esp + 0x74]
mov cl, byte [esp + 0x6c]
mov dl, byte [esi]
sub al, cl
mov ecx, dword [esp + 0x78]
add dl, al
mov byte [esi], dl
add esi, ecx
dec edi
jne 0x413876
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x50]
inc eax
add edx, ecx
cmp eax, ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x34], edx
jl 0x413850
jmp 0x4138f7
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4138f7
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x68], eax
xor edi, edi
test ebp, ebp
jle 0x4138e6
lea ebx, [ebx]
call fcn.00420722
cdq
idiv ebx
sub al, byte [esp + 0x6c]
add al, 0x80
mov byte [esi + edi], al
inc edi
cmp edi, ebp
jl 0x4138d0
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x68]
add esi, ecx
dec eax
mov dword [esp + 0x68], eax
jne 0x4138c4
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x70]
mov ecx, dword [edi + 0x6c]
lea ebp, [edi + 0x64]
xor edx, edx
mov dx, word [ebp + 0x12]
lea esi, [edi + 0xcc]
push edx
push eax
push ecx
mov ecx, esi
call fcn.004129b0
mov eax, dword [esi]
test eax, eax
je 0x41394c
mov dx, word [esi + 0x30]
mov ebx, dword [esi + 0x18]
mov edi, dword [esi + 4]
mov esi, dword [ebp]
shl dx, 2
movzx ecx, dx
add ecx, ebx
add ecx, edi
mov edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x1c]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
xor ecx, ecx
mov cx, word [ebp + 0x12]
lea ebx, [edi + 0x100]
push ecx
push edx
push eax
mov ecx, ebx
call fcn.004129b0
mov eax, dword [ebx]
test eax, eax
je 0x41399a
mov cx, word [ebx + 0x30]
mov esi, dword [ebx + 0x18]
mov edx, dword [ebx + 4]
shl cx, 2
movzx ecx, cx
add ecx, esi
mov esi, dword [ebp]
add ecx, edx
mov edx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x1c]
movzx eax, byte [esp + 0x70]
mov ecx, dword [esp + 0x38]
push eax
push ecx
mov ecx, ebx
call fcn.00412820
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
xor edx, edx
mov dx, word [ebx + 0x12]
lea esi, [edi + 0x98]
push edx
push eax
push ecx
mov ecx, esi
call fcn.004129b0
mov edi, dword [esi]
test edi, edi
je 0x4139f3
mov dx, word [esi + 0x30]
mov eax, dword [esi + 0x18]
mov ebp, dword [esi + 4]
mov esi, dword [ebx]
shl dx, 2
movzx ecx, dx
add ecx, eax
add ecx, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 0x14