Function at 0x1005a6d0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [ebp + 0x10]
push ebx
lea ecx, [eax + 0xb6d]
push esi
push edi
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x2c], ecx
cmp eax, ecx
ja case.0x1005ad9c.29821
mov esi, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
lea esp, [esp]
mov eax, dword [ebp - 0x10]
cmp eax, 0x72bb
ja 0x1005abb3
je 0x1005aba4
cmp eax, 0x5dda
ja 0x1005a897
je 0x1005a80e
cmp eax, 0x4119
ja 0x1005a7f6
je 0x1005add1
sub eax, 0x40bf
je 0x1005a7df
sub eax, 0x2d
jne case.0x1005ad9c.29687
mov dword [ebp - 0xc], eax
cmp dword [ecx], eax
jle 0x1005a77b
lea ecx, [ecx]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebx + eax*4]
push 0
push ecx
push 0
push 0x28ea
push 0
push esi
push 0
call fcn.100344f0
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 8]
inc eax
add esp, 0x1c
mov dword [ebp - 0xc], eax
cmp eax, dword [edx]
jl 0x1005a750
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jb 0x1005a7ad
inc esi
sbb byte [ebx], bh
inc esi
sbb al, 0x72
sub cl, byte [ebx - 0x77cebba]
add dword [esi + 0x22], esi
mov eax, dword [esi + 0x14]
cmp eax, 1
jbe 0x1005a7ad
push esi
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x1c]
shr eax, 1
push 0x635e
push edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 0
call fcn.10019420
add esp, 0x10
lea eax, [esi + 0x30]
push eax
push 0
push 0x37e1
call fcn.10005970
add esp, 0xc
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
add eax, 0x2d
mov dword [ebp - 0x10], eax
cmp eax, dword [ebp - 0x2c]
jbe 0x1005a700
mov eax, dword [ebp - 8]
inc ebp
clc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
outsb dx, byte [esi]
ja 0x1005a77c
jno 0x1005a7d6
push 0
lea ecx, [esi + 0x30]
push ecx
push 0x4a79
call fcn.10003820
jmp 0x1005a7bd
cmp eax, 0x4fa4
je 0x1005ac34
cmp eax, 0x5dad
jne case.0x1005ad9c.29687
movzx edi, word [esi + 2]
jmp case.0x1005ad9c.29687
xor edx, edx
mov word [esi + 2], dx
cmp dword [ecx], 1
jne 0x1005a885
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], edx
nop
mov edx, dword [ebp - 0xc]
cmp edx, 0x9f
ja case.0x1005a832.1
movzx edx, byte [edx + 0x1005adf0]
jmp dword [edx*4 + 0x1005addc]
movzx edx, byte [ebx]
add dword [esi], edx
mov edx, dword [esi]
cmp edx, 0xfff1
jb 0x1005a850
add edx, 0xffff000f
mov dword [esi], edx
add edi, dword [esi]
jmp case.0x1005a832.1
mov eax, edi
shl eax, 0x10
or eax, dword [esi]
mov dword [ebp - 8], eax
jmp case.0x1005a832.1
cmp edi, 0xfff1
jb case.0x1005a832.1
sub edi, 0xfff1
mov edx, dword [ebp - 0xc]
add edx, 0x35
mov dword [ebp - 0xc], edx
add edx, 0x4ece
cmp edx, 0x4f6d
jbe 0x1005a820
test ebx, ebx
jne case.0x1005ad9c.29687
pop edi
pop esi
lea eax, [ebx + 1]
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x7261
ja 0x1005ab7c
je 0x1005ab5d
sub eax, 0x5e07
je 0x1005a8c6
sub eax, 0x2d
jne case.0x1005ad9c.29687
shl edi, 0x10
or edi, dword [esi]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ecx], 0x10
jae 0x1005a980
xor eax, eax
mov dword [ebp - 0xc], eax
cmp eax, 0xa5
ja case.0x1005a8e6.1
movzx eax, byte [eax + 0x1005aea4]
jmp dword [eax*4 + 0x1005ae90]
cmp dword [ecx], 0
je 0x1005a904
dec dword [ecx]
movzx edx, byte [ebx]
add dword [esi], edx
add edi, dword [esi]
inc ebx
cmp dword [ecx], 0
jne 0x1005a8f2
mov dword [ebp + 0xc], ebx
dec dword [ecx]
mov eax, dword [esi]
cmp eax, 0xfff1
jb 0x1005a916
add eax, 0xffff000f
mov dword [esi], eax
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_CreateDialogParamW]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14], eax
jmp case.0x1005a8e6.1
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
cmp dword [ebp - 0x14], 0
jne 0x1005a94c
mov byte [ebp + 0x13], 0
jmp case.0x1005a8e6.1
cmp byte [ebp + 0x13], 0
je case.0x1005a8e6.1
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov ecx, dword [ebp + 8]
jmp case.0x1005a8e6.1
mov byte [ebp + 0x13], 1
mov eax, dword [ebp - 0xc]
add eax, 0x37
lea edx, [eax + 0x150a]
mov dword [ebp - 0xc], eax
cmp edx, 0x15af
jbe 0x1005a8d4
cmp dword [ecx], 0x15b0
jb 0x1005aa5c
lea esp, [esp]
mov edx, 0x7f2c
mov dword [ebp - 0x1c], edx
jmp 0x1005a9a0
mov eax, edx
sub eax, 0x7f2c
je 0x1005aa2e
sub eax, 0x2f
jne 0x1005aa3b
mov ecx, dword [esi]
jmp 0x1005a9c0
lea eax, [ebx + 2]
mov dword [ebp - 0xc], 4
lea ebx, [ebx]
movzx edx, byte [eax - 2]
add ecx, edx
mov dword [esi], ecx
movzx edx, byte [eax - 1]
add edi, ecx
add ecx, edx
mov dword [esi], ecx
movzx edx, byte [eax]
add edi, ecx
add ecx, edx
mov dword [esi], ecx
movzx edx, byte [eax + 1]
add edi, ecx
add ecx, edx
add edi, ecx
add eax, 4
dec dword [ebp - 0xc]
mov dword [esi], ecx
jne 0x1005a9d0
add ebx, 0x10
dec dword [ebp - 0x18]
jne 0x1005a9c0
xor edx, edx
mov eax, ecx
mov ecx, 0xfff1
div ecx
mov ecx, dword [ebp + 8]
mov eax, 0x80078071
mov dword [esi], edx
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
mov edx, dword [ebp - 0x1c]
jmp 0x1005aa3b
add dword [ecx], 0xffffea50
mov dword [ebp - 0x18], 0x15b
add edx, 0x2f
mov dword [ebp - 0x1c], edx
cmp edx, 0x7f5b
jbe 0x1005a9a0
cmp dword [ecx], 0x15b0
jae 0x1005a990
mov dword [ebp + 0xc], ebx
cmp dword [ecx], 0
je case.0x1005ad9c.29687
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x20], 4
cmp eax, 0xed
ja case.0x1005aa83.1
movzx edx, byte [eax + 0x1005af60]
jmp dword [edx*4 + 0x1005af4c]
cmp dword [ecx], 0
je 0x1005aaa2
nop
dec dword [ecx]
movzx eax, byte [ebx]
add dword [esi], eax
add edi, dword [esi]
inc ebx
cmp dword [ecx], 0
jne 0x1005aa90
mov dword [ebp + 0xc], ebx
dec dword [ecx]
jmp case.0x1005aa83.1
mov eax, dword [esi]
mov ecx, 0xfff1
xor edx, edx
div ecx
mov ecx, dword [ebp + 8]
mov dword [esi], edx
jmp case.0x1005aa83.1
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
jmp case.0x1005aa83.1
cmp dword [ecx], 0x10
jb case.0x1005aa83.1
jmp 0x1005aae0
mov eax, 0x7233
mov dword [ebp - 0x1c], eax
cmp eax, eax
jne 0x1005ab34
add dword [ecx], 0xfffffff0
lea eax, [ebx + 2]
mov edx, 4
movzx ecx, byte [eax - 2]
add ecx, dword [esi]
add eax, 4
mov dword [esi], ecx
movzx ebx, byte [eax - 5]
add edi, ecx
add ecx, ebx
mov dword [esi], ecx
movzx ebx, byte [eax - 4]
add edi, ecx
add ecx, ebx
mov dword [esi], ecx
movzx ebx, byte [eax - 3]
add edi, ecx
add ecx, ebx
add edi, ecx
dec edx
mov dword [esi], ecx
jne 0x1005aaf7
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
add ebx, 0x10
mov dword [ebp + 0xc], ebx
add eax, 0x1f
mov dword [ebp - 0x1c], eax
cmp eax, 0x7233
jbe 0x1005aaea
cmp dword [ecx], 0x10
jae 0x1005aae0
mov eax, dword [ebp - 0xc]
add eax, 0x4f
dec dword [ebp - 0x20]
mov dword [ebp - 0xc], eax
jne 0x1005aa71
jmp case.0x1005ad9c.29687
push 0x7f35
lea edx, [ebp - 0x28]
push 0
push edx
mov dword [ebp - 0x28], 0x130
call fcn.100680e0
mov dword [ebp - 4], eax
jmp 0x1005a7bd
cmp eax, 0x728e
jne case.0x1005ad9c.29687
mov eax, dword [ebp - 4]
test eax, eax
je 0x1005ac34
mov dword [eax], 0
mov dword [eax + 0x70], 0
jmp case.0x1005ad9c.29687
mov eax, dword [ebp - 4]
mov dword [eax + 8], 0
jmp case.0x1005ad9c.29687
cmp eax, 0x73c9
ja 0x1005ad85
mov dword [ecx], 0x840f0000
scasd eax, dword es:[edi]
add dword [eax], eax
add byte [0xffff8d18], al
je 0x1005ad73
add eax, 0xffff8d18
cmp eax, 0xb4
ja case.0x1005ad9c.29687
movzx edx, byte [eax + 0x1005b068]
jmp dword [edx*4 + 0x1005b050]
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x14], edx
jmp case.0x1005ad9c.29687
pop ds
mov cl, 0x39
wait
wait
push 0
push 0x5f3
push 0
call fcn.1003e3e0
mov ecx, dword [ebp - 4]
add esp, 0xc
mov dword [ebp - 0x20], edx
mov dword [ecx + 0x70], eax
test eax, eax
jne 0x1005a7c0
mov ecx, 0x2360
mov dword [ebp - 0x20], ecx
mov eax, ecx
sub eax, 0x2360
je 0x1005ac3d
sub eax, 0x22
jne 0x1005ac53
xchg ebp, eax
xchg ebx, eax
daa
ja 0x1005abba
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 4]
push 0
push 0x2b6
push edx
call fcn.10046fc0
mov ecx, dword [ebp - 0x20]
add esp, 0xc
add ecx, 0x22
mov dword [ebp - 0x20], ecx
cmp ecx, 0x2382
jbe 0x1005ac21
jmp 0x1005a7c0
mov ecx, dword [ebp - 4]
push 0
lea eax, [ebp - 0x20]
push eax
push 0xbbf
add ecx, 0xa4
push ecx
push 0x100751d0
push 0
mov dword [ebp - 0x20], 0
call fcn.10059b50
mov eax, dword [ebp - 4]
push 0
lea edx, [ebp - 0x20]
push edx
push 0xbbf
add eax, 0xec
push eax
push 0x100751d0
push 0
mov dword [ebp - 0x20], 0
call fcn.10059b50
mov edx, dword [ebp - 4]
add edx, 0x104
push 0
lea ecx, [ebp - 0x20]
push ecx
push 0xbbf
push edx
push 0x100751d0
push 0
mov dword [ebp - 0x20], 0
call fcn.10059b50
add esp, 0x48
jmp 0x1005a7c0
invalid
mov ecx, dword [ebp - 4]
push 0
lea eax, [ebp - 0x20]
push eax
push 0xbbf
add ecx, 0xbc
push ecx
push 0x100751d0
push 0
mov dword [ebp - 0x20], 0
call fcn.10059b50
mov eax, dword [ebp - 4]
push 0
lea edx, [ebp - 0x20]
push edx
push 0xbbf
add eax, 0xd4
push eax
push 0x100751d0
push 0
mov dword [ebp - 0x20], 0
call fcn.10059b50
mov edx, dword [ebp - 4]
add edx, 0x8c
jmp 0x1005acbe
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x24], edx
mov dword [eax], edx
mov dword [eax + 0x34], edx
jmp case.0x1005ad9c.29687
add eax, 0xffff8c0a
cmp eax, 0x87
ja case.0x1005ad9c.29687
movzx eax, byte [eax + 0x1005b134]
jmp dword [eax*4 + 0x1005b120]
rol byte [ecx + 0x59], cl
mov ebx, 0xfc558b5a
mov dword [edx + 0x38], 0
jmp case.0x1005ad9c.29687
mov eax, dword [ebp - 4]
mov dword [eax + 0x3c], 0
jmp case.0x1005ad9c.29687
mov edx, dword [ebp - 4]
mov dword [ebp - 8], edx
jmp case.0x1005ad9c.29687
mov eax, dword [ecx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret